//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.UI.Composition.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;

        interface IClosable;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            runtimeclass Compositor;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            namespace Core
            {
                interface ICompositorController;

                runtimeclass CompositorController;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            namespace Core
            {
                declare
                {
                    interface Windows.Foundation.TypedEventHandler<Windows.UI.Composition.Core.CompositorController*, IInspectable*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            namespace Core
            {
                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.UI.Composition.Core.CompositorController)]
                [uuid(2D75F35A-70A7-4395-BA2D-CEF0B18399F9)]
                interface ICompositorController : IInspectable
                {
                    [propget] HRESULT Compositor([out] [retval] Windows.UI.Composition.Compositor** value);
                    HRESULT Commit();
                    HRESULT EnsurePreviousCommitCompletedAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                    [eventadd] HRESULT CommitNeeded([in] Windows.Foundation.TypedEventHandler<Windows.UI.Composition.Core.CompositorController*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT CommitNeeded([in] EventRegistrationToken token);
                }

                [activatable(Windows.Foundation.UniversalApiContract, 6.0)]
                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass CompositorController
                {
                    [default] interface Windows.UI.Composition.Core.ICompositorController;
                    interface Windows.Foundation.IClosable;
                }
            }
        }
    }
}
