os/graphics/graphicscomposition/openwfsupport/inc/symbianstream.h
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
// symbianstream.h
sl@0
    15
// C API for surface stream implementation of OpenWF-C NativeStream
sl@0
    16
//
sl@0
    17
sl@0
    18
#ifndef __SYMBIANSTREAM_H__
sl@0
    19
#define __SYMBIANSTREAM_H__
sl@0
    20
sl@0
    21
sl@0
    22
#ifdef __cplusplus
sl@0
    23
class TSurfaceId;
sl@0
    24
class RSurfaceManager;
sl@0
    25
#else
sl@0
    26
typedef struct struct_TSurfaceId TSurfaceId;
sl@0
    27
#endif
sl@0
    28
#include <KHR/khrplatform.h>
sl@0
    29
typedef khronos_int32_t khronos_bool;
sl@0
    30
typedef khronos_int32_t TErrCode;
sl@0
    31
sl@0
    32
/*!
sl@0
    33
 * \brief Image stream implementation
sl@0
    34
 *
sl@0
    35
 * WF native stream is an abstraction of image stream or
sl@0
    36
 * a content pipe that can be used to deliver image data from
sl@0
    37
 * place to another. A stream has a producer (source) and a consumer
sl@0
    38
 * (sink) as its users.
sl@0
    39
 *
sl@0
    40
 * Streams operate on buffers, whose count is fixed at creation
sl@0
    41
 * time (minimum is 1, but for non-blocking behavior values
sl@0
    42
 * greater than 1 should be used.) Streams are meant to be used
sl@0
    43
 * strictly on "point-to-point" basis, i.e. there should be only
sl@0
    44
 * one producer and one consumer for each stream.
sl@0
    45
 *
sl@0
    46
 */
sl@0
    47
#	ifdef __cplusplus
sl@0
    48
extern "C" {
sl@0
    49
#	endif
sl@0
    50
sl@0
    51
#define KInitialContextSerialNumber 0
sl@0
    52
#define KNoAssociatedScreenNumber (-1)
sl@0
    53
sl@0
    54
typedef const TSurfaceId*	SymbianStreamType;
sl@0
    55
sl@0
    56
typedef
sl@0
    57
    enum type_SymbianStreamEventBits   {       //note reservations are internal and reorderable
sl@0
    58
    ESOWF_NoEvent                       = 0x00000000, // no event field: used to invalidate an observer
sl@0
    59
                                                        // entry in the observer container
sl@0
    60
    ESOWF_EventComposed                 = 0x00000001, // identifies the callback called when tha internal a stream is updated
sl@0
    61
    
sl@0
    62
    ESOWF_EventUpdated                  = 0x00000010, // identifies the content update
sl@0
    63
                                                        //callback used to trigger a new composition
sl@0
    64
    ESOWF_SIEventsMask                  = ESOWF_EventComposed | ESOWF_EventUpdated,
sl@0
    65
sl@0
    66
    // the following events identify the SUS events
sl@0
    67
    ESOWF_EventAvailable                = 0x00000100, // SUS notification
sl@0
    68
    ESOWF_EventDisplayed                = 0x00000200, // SUS notification
sl@0
    69
    ESOWF_EventDisplayedX               = 0x00000400, // SUS notification
sl@0
    70
    ESOWF_SUSEventsMask                 = ESOWF_EventDisplayed | ESOWF_EventAvailable | ESOWF_EventDisplayedX,
sl@0
    71
sl@0
    72
    ESOWF_AllEventsMask                 = (ESOWF_SIEventsMask | ESOWF_SUSEventsMask),
sl@0
    73
sl@0
    74
    // the following fields are additional operations, extending the observer behaviour
sl@0
    75
    ESOWF_ObserverReturnDefaultEvent    = 0x00010000,
sl@0
    76
    ESOWF_ObserverProcessing            = 0x00020000,
sl@0
    77
    ESOWF_ObserverCheckVisible          = 0x00040000,
sl@0
    78
    ESOWF_ObserverCancel                = 0x00080000,
sl@0
    79
sl@0
    80
    // reserved for future extensions
sl@0
    81
    ESOWF_RESERVED_MASK                 = 0xff000000
sl@0
    82
    } SymbianStreamEventBits;
sl@0
    83
sl@0
    84
typedef khronos_int32_t SymOwfNativeStreamBuffer;
sl@0
    85
sl@0
    86
#define SYMBIAN_INVALID_HANDLE  0
sl@0
    87
sl@0
    88
typedef khronos_int32_t	MultipleSymbianStreamEventBits;
sl@0
    89
typedef khronos_int32_t	SymNativeStreamEvent;
sl@0
    90
typedef khronos_int32_t SymbianStreamBuffer;
sl@0
    91
typedef khronos_int32_t	SymOwfPixelFormat;
sl@0
    92
typedef	khronos_int32_t SymOwfBool;
sl@0
    93
sl@0
    94
typedef enum
sl@0
    95
{
sl@0
    96
    SOWF_STREAM_ERROR_NONE               = 0,
sl@0
    97
    SOWF_STREAM_ERROR_INVALID_STREAM     = -1,
sl@0
    98
    SOWF_STREAM_ERROR_INVALID_OBSERVER   = -2,
sl@0
    99
    SOWF_STREAM_ERROR_OUT_OF_MEMORY      = -3
sl@0
   100
} SOWF_STREAM_ERROR;
sl@0
   101
sl@0
   102
/*! Native stream callback function type */
sl@0
   103
typedef void (*SymOwfStreamCallback)(SymbianStreamType, SymNativeStreamEvent, void*);
sl@0
   104
/*! Native stream callback function type */
sl@0
   105
typedef void (*SymbianStreamCallback)(SymbianStreamType, MultipleSymbianStreamEventBits, void*, void*);
sl@0
   106
sl@0
   107
typedef struct{
sl@0
   108
    TInt32      length;
sl@0
   109
    TInt32      id;
sl@0
   110
    TInt32      par;
sl@0
   111
    TInt32      serialNumber;
sl@0
   112
    TInt32      immediateAvailable;
sl@0
   113
    TInt32      immediateVisibility;
sl@0
   114
} SYMOWF_CONTENT_UPDATED_PARAM;
sl@0
   115
sl@0
   116
typedef struct{
sl@0
   117
    TInt32      length;
sl@0
   118
    TInt32      event;
sl@0
   119
} SYMOWF_DEFAULT_EVENT_PARAM;
sl@0
   120
sl@0
   121
typedef enum
sl@0
   122
{
sl@0
   123
    SYM_CONTENT_UPDATE_BEGIN               = 0x00000001,
sl@0
   124
    SYM_CONTENT_UPDATE_END                 = 0x00000002,
sl@0
   125
    SYM_CONTENT_UPDATE                     = 0x00000003,
sl@0
   126
    SYM_CONTENT_UPDATE_MAX                 = 0xffffffff
sl@0
   127
} SymContentUpdatedCommandsId;
sl@0
   128
sl@0
   129
typedef enum
sl@0
   130
{
sl@0
   131
    SYM_CONTENT_VISIBLE_NOT_SET            = 0x00000000,
sl@0
   132
    SYM_CONTENT_VISIBLE                    = 0x00000001,
sl@0
   133
    SYM_CONTENT_NOT_VISIBLE                = 0x00000002,
sl@0
   134
    SYM_CONTENT_MAX                        = 0xffffffff
sl@0
   135
} SymContextVisibilityState;
sl@0
   136
sl@0
   137
typedef enum
sl@0
   138
{
sl@0
   139
    SYM_CONTENT_PREVIOUS_COMMIT_FALSE      = 0x00000000,
sl@0
   140
    SYM_CONTENT_PREVIOUS_COMMIT_TRUE       = 0x00000001,
sl@0
   141
    SYM_CONTENT_COMMIT_MAX                 = 0xffffffff
sl@0
   142
} SymContextCommitState;
sl@0
   143
sl@0
   144
sl@0
   145
/** Finds, and creates if necessary, a Native Stream object encapsulating the specified surface.
sl@0
   146
sl@0
   147
@param  aId The TSurfaceId for the surface to encapsulate.
sl@0
   148
@param  aReturnHandle   The Native Stream handle created.
sl@0
   149
sl@0
   150
@pre
sl@0
   151
    -   aId must not be a NULL pointer
sl@0
   152
    -   aReturnHandle must not be a NULL pointer, and must point to writable storage for the handle.
sl@0
   153
    -   aId must be a valid active Surface ID created by the Surface Manager.
sl@0
   154
        -   In particular, aId->IsNull() should return EFalse.
sl@0
   155
    -   Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.
sl@0
   156
@post
sl@0
   157
    The location pointed to by aReturnHandle is set to a valid Native Stream object and KErrNone is returned, or NULL is set and an error code is returned appropriately.
sl@0
   158
    The method may fail due to memory allocation if the Native Stream does not already exist.
sl@0
   159
    If a stream object is successfully created, then the reference on the stream is increased to ensure it remains live following the method call. See SymbianStreamRemoveReference to release the reference.
sl@0
   160
sl@0
   161
@panic  NativeStream 1000001 Null Surface ID
sl@0
   162
@panic  NativeStream  1000002 Null return value pointer
sl@0
   163
@return Symbian error code
sl@0
   164
    -  KErrNone    Method Succeeded
sl@0
   165
    -  KErrBadHandle   aId was not created by the Surface Manager, or has been destroyed.
sl@0
   166
    -  KErrNoMemory    Internal allocation of resources for the Native Stream failed.
sl@0
   167
**/
sl@0
   168
  IMPORT_C TErrCode SymbianStreamAcquire( const TSurfaceId* aId, SymbianStreamType* aReturnHandle);
sl@0
   169
sl@0
   170
/** Opens the current output buffer of the Native Stream object for non-exclusive reading.
sl@0
   171
sl@0
   172
@param  aStream Native Stream handle that is to be accessed.
sl@0
   173
@param  aReturnBuffer   Filled with the handle to use to access the current read buffer
sl@0
   174
sl@0
   175
@pre
sl@0
   176
    -   aStream must be an active Native Stream object. It must not be NULL.
sl@0
   177
    -   aReturnBuffer must not be a NULL pointer, and must point to writable storage for the handle.
sl@0
   178
    -   Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.
sl@0
   179
    -   To simplify composition, SymbianStreamAcquireReadBuffer will never fail. It will arbitrarily select a buffer if the stream has never been written to or updated.
sl@0
   180
@post
sl@0
   181
    -   This method always succeeds and returns quickly.
sl@0
   182
    -   The current read buffer is locked for reading.
sl@0
   183
    -   The location pointed to by aReturnBuffer is set to a handle representing the read buffer at the time of this call.
sl@0
   184
    -   Many readers may access the same buffer, but if the Native Stream represents a multi-buffered TSurfaceId content, writers are blocked from overwriting the current read buffer, which will be the last buffer successfully written to.
sl@0
   185
        -   In single-buffered streams, the content of the buffer may be overwritten while the reader is reading it, leading to tearing, but this behavior is generally considered preferable to blocking the reader.
sl@0
   186
    -   The Native Stream will not be destroyed while buffers are acquired.
sl@0
   187
    -   Note that no operations likely to cause failure will occur during the acquire method, but successful acquire does not guarantee that the buffer pixel data can be successfully mapped using NativeStreamGetBufferPointer.
sl@0
   188
sl@0
   189
@panic NativeStream 1000002 Null return value pointer
sl@0
   190
@panic NativeStream 1000003 Null Native Stream
sl@0
   191
@return Symbian error code
sl@0
   192
    -  KErrNone    Method Succeeded
sl@0
   193
    -  KErrNoMemory    Internal allocation of resources for the Native Stream failed.
sl@0
   194
**/
sl@0
   195
  IMPORT_C TErrCode SymbianStreamAcquireReadBuffer( SymbianStreamType aStream, SymbianStreamBuffer* aReturnBuffer);
sl@0
   196
  
sl@0
   197
 
sl@0
   198
/** Opens the write buffer of the Native Stream for exclusive writable access.
sl@0
   199
sl@0
   200
@param  aStream Native Stream handle that is to be accessed.
sl@0
   201
@param  aReturnBuffer   Filled with the handle to use to access the current write buffer
sl@0
   202
sl@0
   203
@pre
sl@0
   204
    -   aStream must be an active Native Stream object. It must not be NULL.
sl@0
   205
    -   aReturnBuffer must not be a NULL pointer, and must point to writable storage for the handle.
sl@0
   206
    -   In single-buffered Native Streams, access is not controlled, any number of readers and/or writer(s) may access the buffer simultaneously, potentially leading to tearing, but this behavior is generally considered preferable to blocking the reader.
sl@0
   207
    -   In multi-buffered Native Streams, the next write buffer must be available, or the method call will fail and return an error. It may fail in three scenarios:
sl@0
   208
        -   There is already an active writer
sl@0
   209
        -   There are still readers attached to the next write buffer candidate (in buffer swapping architectures)
sl@0
   210
        -   The copy from write buffer to read buffer is ongoing, or waiting for readers (in buffer copying architectures)
sl@0
   211
    -   Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.
sl@0
   212
@post
sl@0
   213
    -   This method returns quickly.
sl@0
   214
    -   If the write buffer cannot be acquired immediately then an error code is returned, indicating why exclusive access to a writable buffer could not be obtained.
sl@0
   215
    -   If the write buffer is acquired the KErrNone is returned, and the contents referenced by aReturnBuffer are filled with a handle representing the current write buffer. The current write buffer is locked for writing.
sl@0
   216
    -   The Native Stream will not be destroyed while buffers are acquired.
sl@0
   217
    -   Note that no resource operations likely to cause failure will occur during the acquire method, but successful acquire does not guarantee that the buffer pixel data can be successfully mapped using NativeStreamGetBufferPointer.
sl@0
   218
@panic NativeStream 1000002 Null return value pointer
sl@0
   219
@panic NativeStream 1000003 Null Native Stream
sl@0
   220
@return Symbian error code
sl@0
   221
    -   KErrNone    Method Succeeded
sl@0
   222
    -   KErrInUse   Write buffer could not be exclusively acquired
sl@0
   223
**/ 
sl@0
   224
  IMPORT_C TErrCode SymbianStreamAcquireWriteBuffer( SymbianStreamType aStream, SymbianStreamBuffer* aReturnBuffer);
sl@0
   225
  
sl@0
   226
sl@0
   227
/** Registers observers for OpenWF-C SI specified events.
sl@0
   228
@code   typedef void (*SymOwfStreamCallback)(
sl@0
   229
    SymbianStreamType, SymNativeStreamEvent, void*);
sl@0
   230
@endcode
sl@0
   231
@param  aStream Native Stream handle that is to be accessed.
sl@0
   232
@param  aObserver   Client function to be called when any event is called.
sl@0
   233
@param  aData   Data supplied by client which will be passed to the method call.
sl@0
   234
sl@0
   235
@pre
sl@0
   236
    -   aStream must be an active Native Stream object. It must not be NULL.
sl@0
   237
    -   aObserver must not be NULL
sl@0
   238
    -   aData may be NULL
sl@0
   239
    -   The combination of observer and data may be already registered, in which case it will be called twice if an event occurs.
sl@0
   240
    -   Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.
sl@0
   241
@post
sl@0
   242
    -   The method may fail to add the observer to an internal list of observers, due to memory failure.
sl@0
   243
    -   The observer function will be called when any event occurs which was specified in the OpenWF-C SI and has been implemented by OpenWF Support. Symbian OS-specific extension events will not be delivered to observers registering using this method.
sl@0
   244
@panic NativeStream 1000003 Null Native Stream
sl@0
   245
@panic NativeStream 1000004 Null aObserver
sl@0
   246
@return Symbian error code
sl@0
   247
    -   KErrNone    Method Succeeded
sl@0
   248
    -   KErrNoMemory    Internal allocation of resources for the Native Stream failed.
sl@0
   249
**/
sl@0
   250
  IMPORT_C TErrCode SymbianStreamAddObserver( SymbianStreamType aStream, SymbianStreamCallback aObserver, void* aData);
sl@0
   251
sl@0
   252
/** Registers observers for specific events including Symbian OS-specified events.
sl@0
   253
@param  aStream Native Stream handle that is to be accessed.
sl@0
   254
@param  aObserver   Client function to be called when any specified event is called.
sl@0
   255
@param  aData   Client data passed to the function.
sl@0
   256
@param  aScreenNumber   Screen Number of the consumer, where relevant.
sl@0
   257
@param  aEvents Events for which this observer will be called.
sl@0
   258
sl@0
   259
@pre
sl@0
   260
    -   aStream must be an active Native Stream object. It must not be NULL.
sl@0
   261
    -   aObserver must not be NULL
sl@0
   262
    -   aEvents must specify 1 or more event flags
sl@0
   263
    -   Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.
sl@0
   264
    -   aScreenNumber should be one of:
sl@0
   265
        -   zero:   Screen number 0 associated with the first on-screen composition context
sl@0
   266
        -   positive:   A real screen number associated other on-screen composition contexts
sl@0
   267
        -   A good value for aScreenNumber may not be required for all event registrations, and should be set to EScreenNumberAllNoEvents when not required.
sl@0
   268
sl@0
   269
@post
sl@0
   270
    -   The method may fail to add the observer to an internal list of observers, due to memory failure.
sl@0
   271
    -   The observer function will be called when an event specified in the parameter list occurs.
sl@0
   272
    -   If the screen number is zero or positive, or EScreenNumberAllEvents and the event includes ESOWF_EVENTUPDATED 
sl@0
   273
        then this client may be expected to handle bit flagged events - see SymbianStreamEventBits. Such an Observer must 
sl@0
   274
        also send back Available and Displayed notifications to Symbian Stream as required.
sl@0
   275
@panic NativeStream 1000003 Null Native Stream
sl@0
   276
@panic NativeStream 1000004 Null aObserver
sl@0
   277
@return Symbian error code
sl@0
   278
    -   KErrNone    Method Succeeded
sl@0
   279
    -   KErrNoMemory    Internal allocation of resources for the Native Stream failed.
sl@0
   280
    -   KErrArgument    aEvents does not flag any supported events, or aScreenNumber out of range
sl@0
   281
**/
sl@0
   282
  IMPORT_C TErrCode SymbianStreamAddExtendedObserver( SymbianStreamType aStream, SymbianStreamCallback aObserver, void* aData, khronos_int32_t aScreenNumber, SymbianStreamEventBits aEvents);
sl@0
   283
sl@0
   284
sl@0
   285
/** Increases the reference on the Native Stream object, extending its lifetime.
sl@0
   286
@param  aStream Native Stream handle that is to be accessed.
sl@0
   287
sl@0
   288
@pre
sl@0
   289
    -   aStream must be an active Native Stream object. It must not be NULL.
sl@0
   290
@post
sl@0
   291
    -   The object will not be destroyed until an equivalent number of calls to SymbianStreamRemoveReference.
sl@0
   292
@panic NativeStream 1000003 Null Native Stream
sl@0
   293
@panic NativeStream 1000004 Null aObserver
sl@0
   294
**/
sl@0
   295
  IMPORT_C void SymbianStreamAddReference(SymbianStreamType aStream);
sl@0
   296
sl@0
   297
/** Provides Symbian OS-aware clients access to extended features of the currently open buffer via Surface Manager.
sl@0
   298
@param  aStream Native Stream handle that is to be accessed.
sl@0
   299
@param  aBufferHandle   Handle to acquired read or write buffer.
sl@0
   300
@param  aReturnIndex    Returns internal buffer number.
sl@0
   301
@param  aReturnSurface  Returns internal TSurfaceId.
sl@0
   302
sl@0
   303
@pre
sl@0
   304
    -   aStream must be an active Native Stream object. It must not be NULL.
sl@0
   305
    -   aBufferHandle must be a valid acquired buffer on that native stream that has not yet been released.
sl@0
   306
    -   aReturnIndex must not be a NULL pointer, and must point to writable storage for the index value.
sl@0
   307
    -   aReturnSurface must not be a NULL pointer, and must point to writable storage for the TSurfaceId pointer.
sl@0
   308
    -   Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.
sl@0
   309
    -   SymbianStreamGetBufferPointer or SymbianStreamGetBufferId can only be called after a call to SymbianStreamAcquireReadBuffer or SymbianStreamAcquireWriteBuffer, and before the call to SymbianStreamReleaseReadBuffer or SymbianStreamReleaseWriteBuffer.
sl@0
   310
    -   They can be called multiple times in this period, but each call is not guaranteed to return the same information, and the information returned by an earlier call should not be used after repeating the call or after calling SymbianStreamReleaseReadBuffer or SymbianStreamReleaseWriteBuffer.
sl@0
   311
sl@0
   312
@panic NativeStream 1000002 Null return value pointer
sl@0
   313
@panic NativeStream 1000003 Null Native Stream
sl@0
   314
@return Symbian error code
sl@0
   315
    -   KErrNone    Method Succeeded
sl@0
   316
    -   KErrBadHandle   aBufferNumber was NULL or not acquired on this Native Stream
sl@0
   317
**/
sl@0
   318
  IMPORT_C TErrCode SymbianStreamGetBufferId( SymbianStreamType aStream, SymbianStreamBuffer aBufferHandle, khronos_int32_t* aReturnIndex, const TSurfaceId** aReturnSurface);
sl@0
   319
sl@0
   320
/** Finds the persistent Native Stream instance associated with the surface ID. If the association does not exist then this method fails - it does not attempt to create the association.
sl@0
   321
@param  aId Surface ID handle that is to be accessed.
sl@0
   322
@param  aReturnStream   Filled with the handle of the equivalent Native Stream
sl@0
   323
@pre
sl@0
   324
    -   aId must not be NULL.
sl@0
   325
    -   aReturnStream must not be a NULL pointer, and must point to writable storage for the handle.
sl@0
   326
    -   [Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.]
sl@0
   327
@post
sl@0
   328
    -   If a Native Stream has been successfully acquired, using SymbianStreamAcquire, for the surface ID, then that Native Stream is returned.
sl@0
   329
    -   The reference on the stream is increased to ensure it remains live following the method call. See SymbianStreamRemoveReference to release the reference.
sl@0
   330
    -   If the identified stream is not currently acquired, then NULL is returned, and an error code is set.
sl@0
   331
    -   The error codes set by this method may not distinguish between Surface IDs that have not been Acquired and bad values for the surface ID, such as IsNull() or destroyed surfaces.
sl@0
   332
sl@0
   333
@panic NativeStream 1000001 Null Surface ID
sl@0
   334
@panic NativeStream 1000002 Null return value pointer
sl@0
   335
@return Symbian error code
sl@0
   336
    -   KErrNone    Method Succeeded
sl@0
   337
    -   KErrNoMemory    Internal allocation of resources for the Native Stream failed.
sl@0
   338
    -   KErrNotFound    No Native Stream already exists that encapsulates aId.
sl@0
   339
**/
sl@0
   340
  IMPORT_C TErrCode SymbianStreamFind( const TSurfaceId* aId, SymbianStreamType* aReturnStream);
sl@0
   341
sl@0
   342
/** Returns a pointer to the pixel data associated with the acquired buffer.
sl@0
   343
@param  aStream Native Stream handle that is to be accessed.
sl@0
   344
@param  aBuffer Acquired buffer handle.
sl@0
   345
@param  aReturnPointer  Filled with the handle to use to access the current read buffer
sl@0
   346
@pre
sl@0
   347
    -   aStream must be an active Native Stream object. It must not be NULL.
sl@0
   348
    -   aBuffer should not be NULL
sl@0
   349
    -   aReturnPointer must not be a NULL pointer, and must point to writable storage for the pointer.
sl@0
   350
    -   aBuffer must be a currently acquired read or write buffer handle on the specified Native Stream.
sl@0
   351
    -   Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.
sl@0
   352
    -   SymbianStreamGetBufferPointer or SymbianStreamGetBufferId should not be called more than once for each buffer acquire. Correct cleanup behavior is not guaranteed if these methods are called multiple times.
sl@0
   353
    -   The pixel data must be mappable to CPU-accessible RAM. For some multimedia content types this may not be possible, and the method will fail. The error reported will be forwarded from Surface Manager.
sl@0
   354
@post
sl@0
   355
    If unsuccessful, an error code is returned.
sl@0
   356
    -   The method may fail if the pixel data cannot be made available in the caller's address space, for a variety of reasons including running out of virtual memory.
sl@0
   357
    If Successful:
sl@0
   358
    -   Pixel data is made available and a pointer to the first pixel is returned.
sl@0
   359
    -   The layout of the pixel data will be as specified by SymbianStreamGetHeader.
sl@0
   360
    -   The memory may be tagged as read-only if the buffer was generated using AcquireReadBuffer.
sl@0
   361
    -   This layout implies a maximum size to the buffer data. The client should not access data outside that range of addresses.
sl@0
   362
sl@0
   363
@panic NativeStream 1000001 Null Surface ID
sl@0
   364
@panic NativeStream 1000002 Null return value pointer
sl@0
   365
@return Symbian error code
sl@0
   366
    -   KErrNone    Method Succeeded
sl@0
   367
    -   KErrBadHandle   aBuffer was NULL or not acquired on this Native Stream
sl@0
   368
    -   <<other>>   mapping of the TSurfaceId failed - reporting the internal error.
sl@0
   369
**/
sl@0
   370
  IMPORT_C TErrCode SymbianStreamGetBufferPointer( SymbianStreamType aStream, SymbianStreamBuffer aBuffer, void** aReturnPointer);
sl@0
   371
sl@0
   372
/** Returns a description of the format of the image data stored in the Native Stream.
sl@0
   373
@param  aStream Native Stream handle that is to be accessed.
sl@0
   374
@param  aWidth  Pointer to fill in width in pixels of accessible buffer.
sl@0
   375
@param  aHeight Pointer to fill in height in pixels of accessible buffer.
sl@0
   376
@param  aStride Pointer to fill in offset between rows of pixels.
sl@0
   377
@param  aFormat Pointer to fill in format code matching well known Symbian OS surface format UIDs.
sl@0
   378
@param  aFixelSize  Pointer to fill in number of bytes per pixel for the given format.
sl@0
   379
sl@0
   380
@pre
sl@0
   381
    -   aStream must be an active Native Stream object. It must not be NULL.
sl@0
   382
    -   The remaining parameters are each either NULL, or point to local data storage which will be modified.
sl@0
   383
@post
sl@0
   384
    -   Targets of non-NULL parameters will be filled in with values describing the surface encapsulated by the Native Stream.
sl@0
   385
    -   [Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.]
sl@0
   386
    -   In the current implementation, this information is stored locally and can be efficiently accessed.
sl@0
   387
@panic NativeStream 1000002 Null return value pointer
sl@0
   388
@panic NativeStream 1000003 Null Native Stream
sl@0
   389
**/
sl@0
   390
  IMPORT_C void SymbianStreamGetHeader( SymbianStreamType aStream, khronos_int32_t* aWidth, khronos_int32_t* aHeight, khronos_int32_t* aStride, khronos_int32_t* aFormat, khronos_int32_t* aPixelSize);
sl@0
   391
sl@0
   392
/** Returns extra details of the format of the image data stored in the Native Stream.
sl@0
   393
 This method is intended to allow compositors to access the SurfaceManager hints associated with the 
sl@0
   394
 stream without using SurfaceManager-explicit code.
sl@0
   395
 It is possible in future that some of the hint IDs could be resolved locally rather than calling surface manager.  
sl@0
   396
@prototype  @internal
sl@0
   397
@param  aStream Native Stream handle that is to be accessed.
sl@0
   398
@param  aHint   Well known unique ID for specific hint property
sl@0
   399
@param  aValueReturn    Pointer to fill in current value for property
sl@0
   400
@param  aMutableReturn  Pointer to fill in to flag whether the property value is fixed or mutable
sl@0
   401
sl@0
   402
@pre
sl@0
   403
    -   aStream must be an active Native Stream object. It must not be NULL.
sl@0
   404
    -   aHint may be any UID value, but only hint UIDs are likely to be successful.
sl@0
   405
    -   aValueReturn may be NULL, in which case the return value will indicate whether the hint is present
sl@0
   406
    -   aMutableeReturn may be NULL, in which case the client must presume the property may be mutable.
sl@0
   407
    -   Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.
sl@0
   408
@post
sl@0
   409
    -   If the hint aHint is not associated with the underlying surface then an error is returned.
sl@0
   410
    -   If the hint is available, KErrNone is returned, and if aValueReturn is not NULL, the location pointed to will be filled with the current value of the hint. If not NULL the location pointed to by aMutableReturn indicates whether the hint is mutable.
sl@0
   411
sl@0
   412
@panic NativeStream 1000003 Null Native Stream
sl@0
   413
@return Symbian error code
sl@0
   414
    -   KErrNone    Method Succeeded
sl@0
   415
    -   KErrArgument    hint not found (from  RSurfaceManager::GetSurfaceHint)
sl@0
   416
    -   <<other>>   error reported from  RSurfaceManager::GetSurfaceHint
sl@0
   417
**/
sl@0
   418
  IMPORT_C TErrCode SymbianStreamGetHint( SymbianStreamType aStream, khronos_int32_t aUid, khronos_int32_t* aValueReturn, khronos_bool* aMutableReturn);
sl@0
   419
sl@0
   420
sl@0
   421
/** Debug method which indicates whether a particular screen number has been registered for screen notifications (from SUS).
sl@0
   422
@param  aScreenNumber   Any valid screen number.
sl@0
   423
@param  aReturnState    Points to a Pointer to hold the returned registered object.
sl@0
   424
sl@0
   425
@pre
sl@0
   426
    -   aReturnState    may be NULL, or must point to a location to receive the internal object registered with SUS
sl@0
   427
    -   [Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.]
sl@0
   428
@post
sl@0
   429
    -   aReturnState void*  opaque handle is NULL if the given screen number is not registered. The type of the internal object returned by this method is subject to change.
sl@0
   430
    -   A change in the value of aReturnState in subsequent calls indicates that the screen has been re-registered.
sl@0
   431
@return Symbian error code
sl@0
   432
    -   KErrNone    The screen number is registered with SUS.
sl@0
   433
    -   KErrNotFound    The screen number is not registered.
sl@0
   434
    -   KErrNotReady    SUS is not active, but the screen would be registered.
sl@0
   435
    -   KErrAlreadyExists   The screen number is already registered with SUS.
sl@0
   436
**/
sl@0
   437
  IMPORT_C TErrCode SymbianStreamHasRegisteredScreenNotifications( khronos_int32_t aScreenNumber,void** aReturnState);
sl@0
   438
sl@0
   439
/** Generates a registration with Surface Update Server (SUS) for the given screen number at the given priority.
sl@0
   440
@param  aScreenNumber   Number of screen to be registered. This number should be acceptable to SUS.
sl@0
   441
@param  aPriority   Nominal priority of the screen for global updates. Higher values have higher priority.
sl@0
   442
@param  aInternalVersion    internal compositor version number to be reported to SUS.
sl@0
   443
sl@0
   444
@pre
sl@0
   445
    -   aScreenNumber and aPriority should be within acceptable value ranges for SUS.
sl@0
   446
    -   Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.
sl@0
   447
    -   The thread used to register screen notifications must have an active scheduler and generally run in scheduling mode.
sl@0
   448
@post
sl@0
   449
    -   Surface Update Server will be started if it has not already been started.
sl@0
   450
    -   The given screen number is registered or re-registered with SUS at the given priority.
sl@0
   451
    -   If SUS cannot be started, for example in debug environments, then an error is returned, but a screen update object is still created, as returned by SymbianStreamHasRegisteredScreenNotifications.
sl@0
   452
    -   The default heap specified when calling this method will be activated when SUS notifies the Native Stream of an update.
sl@0
   453
@return Symbian error code
sl@0
   454
    -   KErrNone    Method Succeeded
sl@0
   455
    -   KErrNoMemory    Internal allocation of resources for the Native Stream failed.
sl@0
   456
    -   KErrNotReady    SUS was not launched (may occur in unit testing)
sl@0
   457
    -   KErrAlreadyExists   the given screen number is already registered
sl@0
   458
    -   <<other>>   as returned by SUS
sl@0
   459
**/
sl@0
   460
  IMPORT_C TErrCode SymbianStreamRegisterScreenNotifications( khronos_int32_t aScreenNumber, khronos_int32_t aPriority, khronos_int32_t aInternalVersion);
sl@0
   461
sl@0
   462
/** Releases the buffer previously acquired with SymbianStreamAcquireReadBuffer.
sl@0
   463
@param  aStream Native Stream handle that is to be accessed.
sl@0
   464
@param  aBuffer Buffer handle that is to be released.
sl@0
   465
sl@0
   466
@pre
sl@0
   467
    -   aStream must be an active Native Stream object. It must not be NULL.
sl@0
   468
    -   aBuffer must be a buffer handle acquired on this stream using SymbianStreamAcquireReadBuffer and not yet released.
sl@0
   469
    -   Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.
sl@0
   470
@post
sl@0
   471
    -   The non-exclusive buffer lock is released, potentially allowing writers to modify the content of the buffer.
sl@0
   472
    -   Any memory made available using SymbianStreamGetBufferPointer on this buffer handle may become unmapped from the caller's address space. The pointer must not continue to be used.
sl@0
   473
    -   Clients using SymbianStreamBufferId to efficiently access multimedia resources should release those resources before calling this method; otherwise they risk the contents being overwritten.
sl@0
   474
@panic NativeStream 1000003 Null Native Stream
sl@0
   475
@return Symbian error code
sl@0
   476
    -   KErrNone    Method Succeeded
sl@0
   477
    -   KErrBadHandle   aBuffer is not a currently open read buffer on this Native Stream;
sl@0
   478
**/
sl@0
   479
  IMPORT_C TErrCode SymbianStreamReleaseReadBuffer( SymbianStreamType aStream, SymbianStreamBuffer aBuffer);
sl@0
   480
sl@0
   481
/** Releases the buffer previously acquired with SymbianStreamAcquireWriteBuffer.
sl@0
   482
@param  aStream Native Stream handle that is to be accessed.
sl@0
   483
@param  aBuffer Buffer handle that is to be released.
sl@0
   484
sl@0
   485
@pre
sl@0
   486
    -   aStream must be an active Native Stream object. It must not be NULL.
sl@0
   487
    -   aBuffer must be a buffer handle successfully acquired on this stream using SymbianStreamAcquireWriteBuffer and not yet released.
sl@0
   488
    -   Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.
sl@0
   489
@post
sl@0
   490
    -   This buffer content becomes the read buffer for all subsequent calls to SymbianStreamAcquireReadBuffer
sl@0
   491
    -   The exclusive buffer lock is released.
sl@0
   492
    -   Any memory made available using SymbianStreamGetBufferPointer on this buffer handle may become unmapped from the caller's address space. The pointer should not continue to be used.
sl@0
   493
    -   Clients using SymbianStreamBufferId to access multimedia resources should release those resources before calling this method; otherwise they risk the changes being ignored.
sl@0
   494
    -   Any registered observers will be called with the ESOWF_EVENTUpdated notification.
sl@0
   495
    -   If the surface is multi-buffered, subsequent attempts to SymbianStreamAcquireWriteBuffer will succeed and will select a different buffer to write to, presuming clients do not still have a non-exclusive read lock on the available write buffers.
sl@0
   496
@panic NativeStream 1000003 Null Native Stream
sl@0
   497
@return Symbian error code
sl@0
   498
    -   KErrNone    Method Succeeded
sl@0
   499
    -   KErrBadHandle   aBuffer is not a currently open write buffer on this Native Stream;
sl@0
   500
**/
sl@0
   501
  IMPORT_C TErrCode      SymbianStreamReleaseWriteBuffer( SymbianStreamType aStream, SymbianStreamBuffer aBuffer);
sl@0
   502
sl@0
   503
/** Removes the observer inserted using SymbianStreamAddObserver.
sl@0
   504
@param  aStream Native Stream handle that is to be accessed.
sl@0
   505
@param  aObserver   identifies the registered observer.
sl@0
   506
@param  aData   Client data supplied when registering the observer.
sl@0
   507
@param  aEvents Events to remove registration from.
sl@0
   508
sl@0
   509
@pre
sl@0
   510
    -   aStream must be an active Native Stream object. It must not be NULL.
sl@0
   511
    -   aData should have been provided as the client data when the observer was registered.
sl@0
   512
    -   aEvents indicates which events should no longer be notified, and should match the original extended events list.
sl@0
   513
    -   If aEvents is empty then the observer is removed from all events.
sl@0
   514
    -   Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.
sl@0
   515
@post
sl@0
   516
    -   The observer function will no longer be called when the specified events occur, unless the observer was registered more than once, in which case the number of notifications will be reduced.
sl@0
   517
    -   There is a small window of opportunity that events triggered on one thread may complete after the observer has been removed from another thread. Clients should be aware of this potential false call.
sl@0
   518
    
sl@0
   519
@panic NativeStream 1000006 Null for all search parameters
sl@0
   520
@panic NativeStream 1000003 Null Native Stream
sl@0
   521
@return Symbian error code
sl@0
   522
    -   KErrNone    Method Succeeded
sl@0
   523
    -   KErrNotFound    The observer function was not found for this Native Stream.
sl@0
   524
    -   KErrArgument    aEvents does not flag any supported events
sl@0
   525
**/
sl@0
   526
  IMPORT_C TErrCode SymbianStreamRemoveObserver( SymbianStreamType aStream, void* aData, SymbianStreamEventBits aEvents);
sl@0
   527
sl@0
   528
/** Reduces the references on the Native Stream object and potentially destroys the object.
sl@0
   529
@param  aStream Native Stream handle that is to be accessed.
sl@0
   530
sl@0
   531
@pre
sl@0
   532
    -   aStream must be an active Native Stream object. It must not be NULL.
sl@0
   533
    -   Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.
sl@0
   534
@post
sl@0
   535
    -   The recorded references are reduced. If this is the final reference then the Native Stream is destroyed.
sl@0
   536
@panic NativeStream 1000003 Null Native Stream
sl@0
   537
**/
sl@0
   538
  IMPORT_C void      SymbianStreamRemoveReference(SymbianStreamType aStream);
sl@0
   539
sl@0
   540
/** Changes the state of the deletion protection flag. The protection state effectively increases the reference, blocking deletion. Direct use of the reference mechanism is preferred.
sl@0
   541
@deprecated The protection flag is used for off-screen composition in the current compositor implementation. Direct use of the reference mechanism is preferred.
sl@0
   542
    Parameters:
sl@0
   543
@param  aStream Native Stream handle that is to be accessed.
sl@0
   544
@param  aFlag   Set true to activate protection - set false to deactivate protection.
sl@0
   545
sl@0
   546
@pre
sl@0
   547
    -   aStream must be an active Native Stream object. It must not be NULL.
sl@0
   548
    -   Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.
sl@0
   549
@post
sl@0
   550
    If the aFlag is different to the internal protection state then the reference is modified:
sl@0
   551
    -   If aFlag is set then the reference is effectively artificially raised to protect the Native Stream against deletion.
sl@0
   552
    -   If aFlag is clear then the reference returns to normal mode, and the Native Stream may be destroyed.
sl@0
   553
@panic NativeStream 1000003 Null Native Stream
sl@0
   554
**/
sl@0
   555
  IMPORT_C void SymbianStreamSetProtectionFlag( SymbianStreamType aStream, khronos_bool aFlag);
sl@0
   556
sl@0
   557
/** Compares two Native Stream handles for equivalency. 
sl@0
   558
 It is probable that the actual handle value is not unique for a particular surface, 
sl@0
   559
 but binary different handles in fact refer to the same internal object.
sl@0
   560
sl@0
   561
sl@0
   562
@param  aStream First Native Stream handle that is to be compared.
sl@0
   563
@param  aStream2    Second Native Stream handle that is to be compared.
sl@0
   564
sl@0
   565
@pre
sl@0
   566
    -   aStream must be an active Native Stream object, or it may be NULL.
sl@0
   567
    -   aStream2 must be an active Native Stream object, or it may be NULL.
sl@0
   568
    -   [Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack. ]
sl@0
   569
    -   Direct comparison will be performed first. No allocations or system calls will be made to resolve this comparison, returning false where, for example the surface IDs refer to the same Surface Manager controlled object.
sl@0
   570
@post
sl@0
   571
    The given handles are compared, and if necessary the internal objects are compared.
sl@0
   572
sl@0
   573
sl@0
   574
@return khronos_bool If they reference the same TSurfaceId then TRUE is returned, else FALSE is returned.
sl@0
   575
**/
sl@0
   576
  IMPORT_C khronos_bool      SymbianStreamSame(SymbianStreamType aStream, SymbianStreamType aStream2);
sl@0
   577
sl@0
   578
/** Removes the screen number from SUS registration.
sl@0
   579
    Parameters:
sl@0
   580
    aScreenNumber   Screen number to be unregistered.
sl@0
   581
sl@0
   582
@pre
sl@0
   583
    -   aScreenNumber should have previously been registered using SymbianStreamRegisterScreenNotifications.
sl@0
   584
    -   Calls can be safely made from any thread, but the same default heap must be in place for all calls. The thread should have an activated clean-up stack.
sl@0
   585
    -   Out of range screen numbers will not have been registered, and will naturally not be found to unregister. No specific error code will indicate these screen numbers.
sl@0
   586
@post
sl@0
   587
    Notifications of content updated will no longer be received by the Native Stream for that screen number or passed on to any observer.
sl@0
   588
@return Symbian error code
sl@0
   589
    -   KErrNone    Method Succeeded - screen unregistered
sl@0
   590
    -   KErrNotReady    The Surface Update Server is not present (in test harnesses).
sl@0
   591
    -   KErrArgument    aScreennNum was not registered
sl@0
   592
**/
sl@0
   593
  IMPORT_C TErrCode      SymbianStreamUnregisterScreenNotifications(khronos_int32_t aScreenNumber);
sl@0
   594
  
sl@0
   595
sl@0
   596
/** Indication that the stream has been displayed in the scene.  
sl@0
   597
 This function is called by a client after it has consumed a buffer following an update notification 
sl@0
   598
 and indicates the state of that consumption.
sl@0
   599
 
sl@0
   600
@param  aStream Native Stream handle that is to be accessed.
sl@0
   601
@param  aEvent  The type of consumption notification event.
sl@0
   602
@param  aScreenNumber   The screen number to which the event applies.
sl@0
   603
@param  aSerialNumber  The serial number to which the event applies. Changes after each composition, allowing repeat calls within one composition to be detected
sl@0
   604
@param  aReturnMask Used by the recipient to enable repeating of the ESOWF_EventDisplayedX event.
sl@0
   605
sl@0
   606
@pre
sl@0
   607
	-	aSerialNumber must be changed after each composition, and allows the Native stream to detect multiple calls from the same composition.
sl@0
   608
    -   aStream must be an active Native Stream object. It must not be NULL.
sl@0
   609
    -   This method, or CheckVisible must be called exactly once after receiving ESOWF_EVENTUpdated, for each type of notification requested in the ESOWF_EVENTUpdated call by any context that has registered both SymbianStreamRegisteredScreenNotifications and SymbianStreamAddObserver (or SymbianStreamAddObserver with ESOWF_EventUpdated).
sl@0
   610
    -   Not calling this method when expected may cause deadlocks, and the result code delivered to SUS after calling the method too often with conflicting result codes is not defined.
sl@0
   611
    -   aEvent indicates which event has occurred. It may be one or more of:
sl@0
   612
        -   ESOWF_EventAvailable    Content is available
sl@0
   613
        -   ESOWF_EventDisplayed    Content is displayed
sl@0
   614
        -   ESOWF_EventDisplayedX   Content is displayed and repeated
sl@0
   615
@post
sl@0
   616
    -   Matching notifications to the Surface Update Server for this screen number may be completed (via callbacks).
sl@0
   617
    -   If the notification is to be repeated then aReturnMask is modified to indicate which notifications should be repeated.
sl@0
   618
sl@0
   619
**/
sl@0
   620
  IMPORT_C void SymbianStreamProcessNotifications( SymbianStreamType aStream, khronos_int32_t aEvent, khronos_int32_t aScreenNumber, khronos_int32_t aSerialNumber, khronos_int32_t* aReturnMask);
sl@0
   621
  
sl@0
   622
/** Indication that the stream is not visible in the scene. 
sl@0
   623
 This function is called by a client after it has consumed a buffer following an update notification 
sl@0
   624
 and indicates the state of that consumption was "not visible".
sl@0
   625
 Currently this is fired for any remaining streams at the end of composition 
sl@0
   626
 after all positive SymbianStreamProcessNotifications have been made.
sl@0
   627
@param  aStream Native Stream handle that is to be accessed.
sl@0
   628
@param  aEvent  The type of consumption notification event.
sl@0
   629
@param  aScreenNumber   The screen number to which the event applies.
sl@0
   630
@param  aSerialNumber  The serial number to which the event applies. Changes after each composition, allowing repeat calls within one composition to be detected.
sl@0
   631
sl@0
   632
@pre
sl@0
   633
	-	aSerialNumber must be changed after each composition event, and allows the Native stream to detect multiple calls from the same composition.
sl@0
   634
    -   aStream must be an active Native Stream object. It must not be NULL.
sl@0
   635
    -   This method, or ProcessNotifications must be called exactly once after receiving ESOWF_EVENTUpdated, for each type of notification requested in the ESOWF_EVENTUpdated call by any context that has registered both SymbianStreamRegisteredScreenNotifications and SymbianStreamAddObserver (or SymbianStreamAddObserver with ESOWF_EventUpdated).
sl@0
   636
    -   aEvent indicates which event has occurred. It may be one or more of:
sl@0
   637
        -   ESOWF_EventAvailable    Content is available
sl@0
   638
        -   ESOWF_EventDisplayed    Content is displayed
sl@0
   639
        -   ESOWF_EventDisplayedX   Content is displayed and repeated
sl@0
   640
@post
sl@0
   641
    Notifications to the Surface Update Server may be completed (via callbacks).
sl@0
   642
sl@0
   643
**/
sl@0
   644
  IMPORT_C void  SymbianStreamCheckVisible(SymbianStreamType aStream, khronos_int32_t aEvent, khronos_int32_t aScreenNumber, khronos_int32_t aSerialNumber);
sl@0
   645
sl@0
   646
  /** This function is called by a client to adjust the shape of the target stream.
sl@0
   647
   This only effects the results discovered by SymbianStreamGetHeader(),
sl@0
   648
   and has no effect on the underlying SurfaceManager Surface.
sl@0
   649
   The flag should only be called when the stream is opened for writing, 
sl@0
   650
   and it only effects calls to SymbianStreamGetHeader(0 after the write buffer is closed. 
sl@0
   651
   When the aFlip flag is not set the width, height and stride are passed to clients as discovered during construction. 
sl@0
   652
   When the aFlip flag is set, the width and height parameters are exchanged for SymbianStreamGetHeader(), 
sl@0
   653
   and a calculated value for stride is returned.
sl@0
   654
  @param  aStream Native Stream handle that is to be accessed.
sl@0
   655
  @param  aFlip  The flip state
sl@0
   656
sl@0
   657
  @post
sl@0
   658
      The flip state is updated when SymbianStreamReleaseWriteBuffer() call is made
sl@0
   659
sl@0
   660
  **/
sl@0
   661
  IMPORT_C void  SymbianStreamSetFlipState(SymbianStreamType aStream, SymOwfBool aFlip);
sl@0
   662
  
sl@0
   663
  IMPORT_C TErrCode SymbianStreamGetChunkHandle(SymbianStreamType aStream, TInt* aHandle);
sl@0
   664
  
sl@0
   665
#	ifdef __cplusplus
sl@0
   666
	}
sl@0
   667
#	endif
sl@0
   668
sl@0
   669
#endif  // __SYMBIANSTREAM_H__