-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathDcxDCompModule.h
More file actions
44 lines (37 loc) · 1.98 KB
/
DcxDCompModule.h
File metadata and controls
44 lines (37 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#pragma once
#ifndef _DCXDCOMPMODULE_H_
#define _DCXDCOMPMODULE_H_
#include "dcxmodule.h"
#include <dcomp.h>
class DcxDCompModule final
: public DcxModule
{
static inline decltype(::DCompositionCreateDevice)* DCompositionCreateDeviceUx = nullptr;
static inline decltype(::DCompositionCreateDevice2)* DCompositionCreateDevice2Ux = nullptr;
static inline decltype(::DCompositionCreateDevice3)* DCompositionCreateDevice3Ux = nullptr;
static inline decltype(::DCompositionCreateSurfaceHandle)* DCompositionCreateSurfaceHandleUx = nullptr;
static inline decltype(::DCompositionAttachMouseDragToHwnd)* DCompositionAttachMouseDragToHwndUx = nullptr;
static inline decltype(::DCompositionAttachMouseWheelToHwnd)* DCompositionAttachMouseWheelToHwndUx = nullptr;
static inline decltype(::DCompositionBoostCompositorClock)* DCompositionBoostCompositorClockUx = nullptr;
static inline decltype(::DCompositionGetFrameId)* DCompositionGetFrameIdUx = nullptr;
static inline decltype(::DCompositionGetStatistics)* DCompositionGetStatisticsUx = nullptr;
static inline decltype(::DCompositionGetTargetStatistics)* DCompositionGetTargetStatisticsUx = nullptr;
static inline decltype(::DCompositionWaitForCompositorClock)* DCompositionWaitForCompositorClockUx = nullptr;
public:
constexpr DcxDCompModule(void) noexcept
: DcxModule()
{}
~DcxDCompModule(void) noexcept;
DcxDCompModule(const DcxDCompModule& other) = delete; // no copy constructor
DcxDCompModule(const DcxDCompModule&& other) = delete; // no move constructor
GSL_SUPPRESS(c.128) DcxDCompModule& operator =(const DcxDCompModule&) = delete; // No assignments!
GSL_SUPPRESS(c.128) DcxDCompModule& operator =(const DcxDCompModule&&) = delete; // No move assignments!
bool load(void) final;
bool unload(void) noexcept final;
static HRESULT dcxDCompositionCreateDevice2(
_In_opt_ IUnknown* renderingDevice,
_In_ REFIID iid,
_Outptr_ void** dcompositionDevice
) noexcept;
};
#endif // _DCXDCOMPMODULE_H_