os/graphics/graphicscomposition/openwfcompositionengine/adaptation/src/Platform/Graphics/symbian/owfnotifications.cpp
changeset 0 bde4ae8d615e
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/os/graphics/graphicscomposition/openwfcompositionengine/adaptation/src/Platform/Graphics/symbian/owfnotifications.cpp	Fri Jun 15 03:10:57 2012 +0200
     1.3 @@ -0,0 +1,504 @@
     1.4 +// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
     1.5 +//
     1.6 +// Permission is hereby granted, free of charge, to any person obtaining a
     1.7 +// copy of this software and/or associated documentation files (the
     1.8 +// "Materials"), to deal in the Materials without restriction, including
     1.9 +// without limitation the rights to use, copy, modify, merge, publish,
    1.10 +// distribute, sublicense, and/or sell copies of the Materials, and to
    1.11 +// permit persons to whom the Materials are furnished to do so, subject to
    1.12 +// the following conditions:
    1.13 +//
    1.14 +// The above copyright notice and this permission notice shall be included
    1.15 +// in all copies or substantial portions of the Materials.
    1.16 +//
    1.17 +// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    1.18 +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    1.19 +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    1.20 +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
    1.21 +// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
    1.22 +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
    1.23 +// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
    1.24 +//
    1.25 +// Description:
    1.26 +// Display Channel adaptation for owfscreen
    1.27 +// 
    1.28 +//
    1.29 +#include "WF/wfc.h"
    1.30 +#include "wfcstructs.h"
    1.31 +#include "wfcdevice.h"
    1.32 +
    1.33 +#include "wfcdevice.h"
    1.34 +#include "wfcelement.h"
    1.35 +#include "wfccontext.h"
    1.36 +#include "wfcimageprovider.h"
    1.37 +
    1.38 +#include "owfarray.h"
    1.39 +#include "owfmemory.h"
    1.40 +#include "owfmutex.h"
    1.41 +#include "owfscreen.h"
    1.42 +#include "owftypes.h"
    1.43 +#include "owfobject.h"
    1.44 +
    1.45 +#include "owfdebug.h"
    1.46 +
    1.47 +#include "owfnotifications.h"
    1.48 +#include <graphics/symbianstream.h>
    1.49 +
    1.50 +#include "owfdisplaycontext.h"
    1.51 +
    1.52 +#ifdef __cplusplus
    1.53 +extern "C" {
    1.54 +#endif
    1.55 +
    1.56 +static void
    1.57 +owfSymContextSourceStreamUpdated(SymbianStreamType stream,
    1.58 +                                 OWFint event,
    1.59 +                                 void* data,
    1.60 +                                 void* param);
    1.61 +
    1.62 +static void
    1.63 +owfSymDeviceSetUpdateFlags(WFC_CONTEXT* context, OWFNativeStreamType stream, WFCint updateFlags);
    1.64 +
    1.65 +static WFCint
    1.66 +owfSymDeviceProcessAllCallBacks(WFC_CONTEXT* context, WFCint events);
    1.67 +
    1.68 +static void
    1.69 +owfSymDeviceSetVisibilityState(WFC_CONTEXT* context, OWFNativeStreamType stream, WFCint visibility);
    1.70 +
    1.71 +static OWFint owfGetScreenNumber(WFC_CONTEXT* context)
    1.72 +{
    1.73 +    OWF_ASSERT(context);
    1.74 +    return context->type == WFC_CONTEXT_TYPE_ON_SCREEN ? context->screenNumber : -context->handle;
    1.75 +}
    1.76 +
    1.77 +static void
    1.78 +owfSymContextSourceStreamUpdated(SymbianStreamType stream,
    1.79 +                                 OWFint event,
    1.80 +                                 void* data,
    1.81 +                                 void* param)
    1.82 +{
    1.83 +    OWF_ASSERT(data);
    1.84 +
    1.85 +    (void) stream; /* suppress compiler warning */
    1.86 + 
    1.87 +    switch (event)
    1.88 +    {
    1.89 +    case ESOWF_ObserverReturnDefaultEvent:
    1.90 +        if (param)
    1.91 +        {
    1.92 +            SYMOWF_DEFAULT_EVENT_PARAM* parameter = (SYMOWF_DEFAULT_EVENT_PARAM*) param;
    1.93 +            if ((parameter->length) == sizeof(SYMOWF_DEFAULT_EVENT_PARAM))
    1.94 +            {
    1.95 +                parameter->event = ESOWF_EventUpdated;
    1.96 +            }
    1.97 +        }
    1.98 +        return;
    1.99 +        
   1.100 +    case ESOWF_EventUpdated:
   1.101 +        {
   1.102 +            WFC_CONTEXT*            context = NULL;
   1.103 +            context = CONTEXT(data);
   1.104 +            OWF_ASSERT(context);
   1.105 +            OWF_ASSERT(context->device);
   1.106 +            
   1.107 +            OWFDisplayContext *pDispCtx = _OWF_DISPLAYCONTEXT(context->displayContext);
   1.108 +            
   1.109 +            if (param)
   1.110 +                {
   1.111 +                SYMOWF_CONTENT_UPDATED_PARAM* parameter = (SYMOWF_CONTENT_UPDATED_PARAM*) param;
   1.112 +                OWFNativeStreamType owfStream = (OWFNativeStreamType) stream;
   1.113 +                
   1.114 +                if ((parameter->length) == sizeof(SYMOWF_CONTENT_UPDATED_PARAM))
   1.115 +                    {
   1.116 +                        switch (parameter->id)
   1.117 +                            {
   1.118 +                            case SYM_CONTENT_UPDATE_BEGIN:
   1.119 +                                {
   1.120 +                                    OWF_Mutex_Lock(&context->updateFlagMutex);
   1.121 +                                    NFPRINT(("+++ BEGIN CONTENT UPDATE"));
   1.122 +                                    
   1.123 +                                    parameter->immediateAvailable = 0;
   1.124 +                                    parameter->immediateVisibility = SYM_CONTENT_VISIBLE_NOT_SET;
   1.125 +                                    if (pDispCtx->iCompositionOngoing &&
   1.126 +                                        context->device &&
   1.127 +                                        pDispCtx->iPreviousCommit == SYM_CONTENT_PREVIOUS_COMMIT_FALSE)
   1.128 +                                    {
   1.129 +                                        TInt i = 0;
   1.130 +                                        parameter->immediateAvailable = 1;
   1.131 +                                        parameter->serialNumber = pDispCtx->iSerialNumber;
   1.132 +                                        for (i = 0; i < context->device->providers.length; i++)
   1.133 +                                        {
   1.134 +                                            WFC_IMAGE_PROVIDER* provider;
   1.135 +    
   1.136 +                                            provider = IMAGE_PROVIDER(OWF_Array_GetItemAt(&context->device->providers, i));
   1.137 +                                            
   1.138 +                                            if (provider->type == WFC_IMAGE_SOURCE && 
   1.139 +                                                provider->streamHandle == owfStream && 
   1.140 +                                                context == provider->owner)
   1.141 +                                            {
   1.142 +                                                parameter->immediateVisibility = provider->contentVisible;
   1.143 +                                                break;
   1.144 +                                            }
   1.145 +                                        }
   1.146 +                                    }
   1.147 +                                    //the mutex is acquired!
   1.148 +                                }
   1.149 +                                return;
   1.150 +                                
   1.151 +                            case SYM_CONTENT_UPDATE_END:
   1.152 +                                ++context->sourceUpdateCount;
   1.153 +                                pDispCtx->iEventServerUpdate |= parameter->par;
   1.154 +                                owfSymDeviceSetUpdateFlags(context, owfStream, parameter->par);
   1.155 +                                OWF_Mutex_Unlock(&context->updateFlagMutex);
   1.156 +                                NFPRINT(("+++ END CONTENT UPDATE"));
   1.157 +                                break;
   1.158 +                                
   1.159 +                            case SYM_CONTENT_UPDATE:
   1.160 +                                NFPRINT(("+++ CONTENT UPDATE"));
   1.161 +                                OWF_Mutex_Lock(&context->updateFlagMutex);
   1.162 +                                ++context->sourceUpdateCount;
   1.163 +                                pDispCtx->iEventServerUpdate |= parameter->par;
   1.164 +                                owfSymDeviceSetUpdateFlags(context, owfStream, parameter->par);
   1.165 +                                OWF_Mutex_Unlock(&context->updateFlagMutex);
   1.166 +                                break;
   1.167 +                            default:
   1.168 +                                break;
   1.169 +                            }
   1.170 +                    }
   1.171 +                else
   1.172 +                    {
   1.173 +                    NFPRINT(("+++ WFC_Context_SourceStreamUpdated parameter length error(%d)",
   1.174 +                            parameter->length));
   1.175 +                    
   1.176 +                    }
   1.177 +                }
   1.178 +            else
   1.179 +                {
   1.180 +                // Old, legacy, behaviour, not sure if really needed
   1.181 +                NFPRINT(("+++ LEGACY CONTENT UPDATE"));
   1.182 +                OWF_Mutex_Lock(&context->updateFlagMutex);
   1.183 +                ++context->sourceUpdateCount;
   1.184 +                OWF_Mutex_Unlock(&context->updateFlagMutex);
   1.185 +                }
   1.186 +        }
   1.187 +        return;
   1.188 +    default:
   1.189 +        return;
   1.190 +    }
   1.191 +}
   1.192 +
   1.193 +static void
   1.194 +owfSymDeviceSetUpdateFlags(WFC_CONTEXT* context, OWFNativeStreamType stream, WFCint updateFlags)
   1.195 +{
   1.196 +    WFC_DEVICE* device = NULL;
   1.197 +    WFCint      i;
   1.198 +    
   1.199 +    OWF_ASSERT(context && (context->device));
   1.200 +
   1.201 +    device = context->device;
   1.202 +    
   1.203 +    for (i = 0; i < device->providers.length; i++)
   1.204 +    {
   1.205 +        WFC_IMAGE_PROVIDER* provider = IMAGE_PROVIDER(OWF_Array_GetItemAt(&device->providers, i));
   1.206 +    
   1.207 +        if (provider->type == WFC_IMAGE_SOURCE && provider->streamHandle == stream && context == provider->owner)
   1.208 +        {
   1.209 +            NFPRINT(("+++ owfSymDeviceSetUpdateFlags set context updated stream(0x%x) provider(0x%x) flags(0x%x)", stream, provider, updateFlags));
   1.210 +            provider->contentUpdated |= updateFlags;
   1.211 +        }
   1.212 +    }
   1.213 +}
   1.214 +
   1.215 +static void
   1.216 +owfSymDeviceSetVisibilityState(WFC_CONTEXT* context, OWFNativeStreamType stream, WFCint visibility)
   1.217 +{
   1.218 +    WFC_DEVICE* device = NULL;
   1.219 +    WFCint      i;
   1.220 +    
   1.221 +    OWF_ASSERT(context && (context->device));
   1.222 +
   1.223 +    device = context->device;
   1.224 +    
   1.225 +    for (i = 0; i < device->providers.length; i++)
   1.226 +    {
   1.227 +        WFC_IMAGE_PROVIDER* provider = IMAGE_PROVIDER(OWF_Array_GetItemAt(&device->providers, i));
   1.228 +        
   1.229 +        if (provider->type == WFC_IMAGE_SOURCE && provider->streamHandle == stream && context == provider->owner)
   1.230 +        {
   1.231 +            provider->contentVisible = visibility;
   1.232 +        }
   1.233 +    }
   1.234 +}
   1.235 +
   1.236 +static WFCint
   1.237 +owfSymDeviceProcessAllCallBacks(WFC_CONTEXT* context, WFCint events)
   1.238 +{
   1.239 +    WFC_DEVICE* device = NULL;
   1.240 +    WFCint      i;
   1.241 +    WFCint newMask = 0;
   1.242 +    NFPRINT(("+++ START owfSymDeviceProcessAllCallBacks events=0x%x", events));
   1.243 +    
   1.244 +    if (!context || !(context->device))
   1.245 +    {
   1.246 +        return newMask;
   1.247 +    }
   1.248 +    device = context->device;
   1.249 +    
   1.250 +    OWFDisplayContext *pDispCtx = _OWF_DISPLAYCONTEXT(context->displayContext);
   1.251 +
   1.252 +    for (i = 0; i < device->providers.length; i++)
   1.253 +    {
   1.254 +        WFC_IMAGE_PROVIDER* source = IMAGE_PROVIDER(OWF_Array_GetItemAt(&device->providers, i));
   1.255 +        
   1.256 +        if (source->contentVisible == SYM_CONTENT_VISIBLE_NOT_SET)
   1.257 +        {
   1.258 +            source->contentVisible = SYM_CONTENT_NOT_VISIBLE;
   1.259 +        }
   1.260 +        
   1.261 +        NFPRINT(("+++ owfSymDeviceProcessAllCallBacks provider=0x%x v=%d t=%d o=%d u=0x%x c=0x%x ", 
   1.262 +                 source, 
   1.263 +                 source->contentVisible == SYM_CONTENT_VISIBLE, 
   1.264 +                 source->type == WFC_IMAGE_SOURCE, 
   1.265 +                 context == source->owner,
   1.266 +                 source->contentUpdated,
   1.267 +                 source->composed));
   1.268 +        
   1.269 +        if (source->contentVisible == SYM_CONTENT_VISIBLE && 
   1.270 +            source->type == WFC_IMAGE_SOURCE && 
   1.271 +            context == source->owner && 
   1.272 +            source->contentUpdated & events &&
   1.273 +            source->composed)
   1.274 +        {
   1.275 +            NFPRINT(("+++ START owfSymDeviceProcessAllCallBacks process all notifications handle=0x%x", 
   1.276 +                    source->streamHandle));
   1.277 +        
   1.278 +            SymbianStreamProcessNotifications((SymbianStreamType)source->streamHandle, 
   1.279 +                                              events & source->contentUpdated, 
   1.280 +                                              owfGetScreenNumber(context),
   1.281 +                                              pDispCtx->iSerialNumber,
   1.282 +                                              &newMask);
   1.283 +
   1.284 +            source->visited |= events;
   1.285 +        
   1.286 +            source->contentUpdated &= ~events;
   1.287 +            source->contentUpdated |= newMask;
   1.288 +            source->composed = 0;
   1.289 +        }
   1.290 +    }
   1.291 +    
   1.292 +    for (i = 0; i < device->providers.length; i++)
   1.293 +    {
   1.294 +        WFC_IMAGE_PROVIDER* source = IMAGE_PROVIDER(OWF_Array_GetItemAt(&device->providers, i));
   1.295 +        
   1.296 +        if (!source->visited && 
   1.297 +            source->type == WFC_IMAGE_SOURCE && 
   1.298 +            context == source->owner && 
   1.299 +            (source->contentUpdated & events))
   1.300 +        {
   1.301 +            NFPRINT(("+++ START owfSymDeviceProcessAllCallBacks check visible handle=0x%x", 
   1.302 +                    source->streamHandle));
   1.303 +                SymbianStreamCheckVisible((SymbianStreamType)source->streamHandle,
   1.304 +                                          events & source->contentUpdated,
   1.305 +                                          owfGetScreenNumber(context),
   1.306 +                                          pDispCtx->iSerialNumber);
   1.307 +                
   1.308 +                source->contentUpdated &= ~events;
   1.309 +            }
   1.310 +        source->visited = 0;
   1.311 +    }
   1.312 +    
   1.313 +    return newMask;
   1.314 +}
   1.315 +
   1.316 +
   1.317 +OWF_API_CALL OWFboolean
   1.318 +owfSymDeviceInitialise(WFC_IMAGE_PROVIDER* source)
   1.319 +{
   1.320 +    WFC_CONTEXT* context = NULL;
   1.321 +    WFC_DEVICE* device = NULL;
   1.322 +    WFCint i = 0;
   1.323 +    OWFNativeStreamType stream;
   1.324 +    
   1.325 +    if (!source || !(source->owner) || ! (((WFC_CONTEXT*)source->owner)->device))
   1.326 +    {
   1.327 +        return OWF_FALSE;
   1.328 +    }
   1.329 +   
   1.330 +    context = (WFC_CONTEXT*)source->owner;
   1.331 +    device = context->device;
   1.332 +    
   1.333 +    if (source->type == WFC_IMAGE_MASK)
   1.334 +    {
   1.335 +        return OWF_TRUE;
   1.336 +    }
   1.337 +    
   1.338 +    stream = source->streamHandle;
   1.339 +    
   1.340 +    source->contentVisible = SYM_CONTENT_VISIBLE_NOT_SET;
   1.341 +    source->visited = 0;
   1.342 +    source->composed = 0;
   1.343 +    
   1.344 +    // forward check to copy the visibility state
   1.345 +    for (i = 0; i < device->providers.length; i++)
   1.346 +    {
   1.347 +        WFC_IMAGE_PROVIDER* provider = IMAGE_PROVIDER(OWF_Array_GetItemAt(&device->providers, i));
   1.348 +        
   1.349 +        if (provider->type == WFC_IMAGE_SOURCE && provider->streamHandle == stream && context == provider->owner)
   1.350 +        {
   1.351 +            source->contentVisible = provider->contentVisible;
   1.352 +            break;
   1.353 +        }
   1.354 +    }
   1.355 +    
   1.356 +    SymbianStreamAddExtendedObserver((SymbianStreamType)source->streamHandle, 
   1.357 +                                  owfSymContextSourceStreamUpdated, 
   1.358 +                                  context, 
   1.359 +                                  owfGetScreenNumber(context),
   1.360 +                                  ESOWF_EventUpdated);
   1.361 +    return OWF_TRUE;
   1.362 +
   1.363 +}
   1.364 +
   1.365 +OWF_API_CALL void
   1.366 +owfSymDeviceDestroy(WFC_DEVICE* device, WFC_IMAGE_PROVIDER* source, WFCint position)
   1.367 +{
   1.368 +    WFCint i = 0;
   1.369 +    OWFboolean foundAnotherSource = OWF_FALSE;
   1.370 +
   1.371 +    OWF_ASSERT(device);
   1.372 +    OWF_ASSERT(source);
   1.373 +
   1.374 +    if (source->type == WFC_IMAGE_SOURCE)
   1.375 +    {
   1.376 +        OWFNativeStreamType  stream = source->streamHandle;
   1.377 +        WFC_CONTEXT* context = (WFC_CONTEXT*)source->owner;
   1.378 +        OWF_ASSERT(context);
   1.379 +        for (i = 0; i < device->providers.length; i++)
   1.380 +        {
   1.381 +            if (i != position)
   1.382 +            {
   1.383 +                WFC_IMAGE_PROVIDER* newObject = (WFC_IMAGE_PROVIDER*)(OWF_Array_GetItemAt(&device->providers, i));
   1.384 +                if ((stream == newObject->streamHandle) && 
   1.385 +                    (context == newObject->owner) && 
   1.386 +                    (newObject->type == WFC_IMAGE_SOURCE))
   1.387 +                {
   1.388 +                    foundAnotherSource = OWF_TRUE;
   1.389 +                    break;
   1.390 +                }
   1.391 +            }
   1.392 +        }
   1.393 +        
   1.394 +        if (!foundAnotherSource)
   1.395 +        {
   1.396 +        WFCint screenNumber = owfGetScreenNumber(context);
   1.397 +        SymbianStreamRemoveObserver((SymbianStreamType)stream,
   1.398 +                                            context,
   1.399 +                                            ESOWF_EventUpdated);
   1.400 +        }
   1.401 +    }
   1.402 +}
   1.403 +
   1.404 +OWF_API_CALL OWFboolean
   1.405 +owfSymElementNotifications(WFC_CONTEXT* context, WFC_ELEMENT* element)
   1.406 +{
   1.407 +    WFC_IMAGE_PROVIDER* source = NULL;
   1.408 +    OWFNativeStreamType stream = OWF_INVALID_HANDLE;
   1.409 +    
   1.410 +    OWF_ASSERT(context && element && (context->device) && (element->source));
   1.411 +    
   1.412 +    source = IMAGE_PROVIDER(element->source);
   1.413 +    
   1.414 +    if (source->type != WFC_IMAGE_SOURCE)
   1.415 +    {
   1.416 +        return OWF_TRUE;
   1.417 +    }
   1.418 +    
   1.419 +    OWF_Mutex_Lock(&context->updateFlagMutex);
   1.420 +    source->composed = source->contentUpdated | ESOWF_EventComposed;
   1.421 +    NFPRINT(("+++ END owfSymElementNotifications composed s=0x%x u=0x%x", source, source->composed));
   1.422 +    
   1.423 +    if (source->contentVisible != SYM_CONTENT_VISIBLE_NOT_SET)
   1.424 +    {
   1.425 +        OWF_Mutex_Unlock(&context->updateFlagMutex);
   1.426 +        return OWF_TRUE;
   1.427 +    }
   1.428 +    
   1.429 +    stream = source->streamHandle;
   1.430 +    
   1.431 +    if (!element->skipCompose)
   1.432 +        {
   1.433 +        owfSymDeviceSetVisibilityState(context, stream, SYM_CONTENT_VISIBLE);
   1.434 +        }
   1.435 +    
   1.436 +    OWF_Mutex_Unlock(&context->updateFlagMutex);
   1.437 +    
   1.438 +    return OWF_TRUE;
   1.439 +}
   1.440 +
   1.441 +OWF_API_CALL void
   1.442 +owfSymDeviceResetVisibilityState(WFC_CONTEXT* context)
   1.443 +{
   1.444 +    WFC_DEVICE* device = NULL;
   1.445 +    WFCint      i;
   1.446 +    
   1.447 +    OWF_ASSERT(context && (context->device));
   1.448 +
   1.449 +    device = context->device;
   1.450 +    
   1.451 +    OWFDisplayContext *pDispCtx = _OWF_DISPLAYCONTEXT(context->displayContext);
   1.452 +    
   1.453 +    OWF_Mutex_Lock(&context->updateFlagMutex);
   1.454 +    pDispCtx->iPreviousCommit = SYM_CONTENT_PREVIOUS_COMMIT_TRUE;
   1.455 +    context->sourceUpdateCount++;
   1.456 +    for (i = 0; i < device->providers.length; i++)
   1.457 +    {
   1.458 +        WFC_IMAGE_PROVIDER* provider = IMAGE_PROVIDER(OWF_Array_GetItemAt(&device->providers, i));
   1.459 +        
   1.460 +        if (context == provider->owner)
   1.461 +        {
   1.462 +            provider->contentVisible = SYM_CONTENT_VISIBLE_NOT_SET;
   1.463 +        }
   1.464 +    }
   1.465 +    OWF_Mutex_Unlock(&context->updateFlagMutex);
   1.466 +}
   1.467 +
   1.468 +OWF_API_CALL WFCint
   1.469 +owfSymProcessAllNotifications(WFC_CONTEXT* context)
   1.470 +{
   1.471 +    WFCint newContextUpdateEvents = 0;
   1.472 +    
   1.473 +    if (!context )
   1.474 +    {
   1.475 +        NFPRINT(("+++ END owfSymProcessAllNotifications (context = 0)"));
   1.476 +        return 0;
   1.477 +    }
   1.478 +    
   1.479 +    OWFDisplayContext *pDispCtx = _OWF_DISPLAYCONTEXT(context->displayContext);
   1.480 +    
   1.481 +    NFPRINT(("+++ START owfSymProcessAllNotifications events=0x%x", pDispCtx->iEventServerUpdate));
   1.482 +    OWF_Mutex_Lock(&context->updateFlagMutex);
   1.483 +    pDispCtx->iCompositionOngoing = WFC_FALSE;
   1.484 +    
   1.485 +    if (pDispCtx->iEventServerUpdate || pDispCtx->iPreviousCommit == SYM_CONTENT_PREVIOUS_COMMIT_TRUE)
   1.486 +    {
   1.487 +        newContextUpdateEvents |= owfSymDeviceProcessAllCallBacks(context, pDispCtx->iEventServerUpdate);
   1.488 +    
   1.489 +        pDispCtx->iEventServerUpdate = newContextUpdateEvents;
   1.490 +        
   1.491 +        if (newContextUpdateEvents)
   1.492 +        {
   1.493 +            context->sourceUpdateCount++;
   1.494 +        }
   1.495 +    }
   1.496 +    
   1.497 +    pDispCtx->iPreviousCommit = SYM_CONTENT_PREVIOUS_COMMIT_FALSE;
   1.498 +    OWF_Mutex_Unlock(&context->updateFlagMutex);
   1.499 +    
   1.500 +    NFPRINT(("+++ END owfSymProcessAllNotifications newEvents=0x%x", newContextUpdateEvents));
   1.501 +    return newContextUpdateEvents;
   1.502 +}
   1.503 +
   1.504 +#ifdef __cplusplus
   1.505 +}
   1.506 +#endif
   1.507 +