MCPcopy Create free account
hub / github.com/deskflow/deskflow / MSWindowsScreen

Method MSWindowsScreen

src/lib/platform/MSWindowsScreen.cpp:82–139  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

80MSWindowsScreen *MSWindowsScreen::s_screen = nullptr;
81
82MSWindowsScreen::MSWindowsScreen(bool isPrimary, bool useHooks, IEventQueue *events, bool enableLangSync)
83 : PlatformScreen(events),
84 m_isPrimary(isPrimary),
85 m_useHooks(useHooks),
86 m_isOnScreen(m_isPrimary),
87 m_hasMouse(GetSystemMetrics(SM_MOUSEPRESENT) != 0),
88 m_events(events)
89{
90 LOG_DEBUG("settting up %s screen", m_isPrimary ? "primary" : "secondary");
91
92 assert(s_windowInstance != nullptr);
93 assert(s_screen == nullptr);
94
95 s_screen = this;
96 try {
97 if (m_isPrimary && m_useHooks) {
98 m_hook.loadLibrary();
99 }
100
101 m_screensaver = new MSWindowsScreenSaver();
102 m_desks = new MSWindowsDesks(
103 m_isPrimary, m_useHooks, m_screensaver, m_events,
104 new TMethodJob<MSWindowsScreen>(this, &MSWindowsScreen::updateKeysCB)
105 );
106 m_keyState = new MSWindowsKeyState(
107 m_desks, getEventTarget(), m_events, AppUtil::instance().getKeyboardLayoutList(), enableLangSync
108 );
109
110 updateScreenShape();
111 m_class = createWindowClass();
112 m_window = createWindow(m_class, LPCWSTR(kAppName));
113 setupMouseKeys();
114 LOG_DEBUG("screen shape: %d,%d %dx%d %s", m_x, m_y, m_w, m_h, m_multimon ? "(multi-monitor)" : "");
115 LOG_DEBUG("window is 0x%08x", m_window);
116
117 if (Settings::value(Settings::Core::PreventSleep).toBool()) {
118 m_powerManager.disableSleep();
119 }
120
121 OleInitialize(0);
122 } catch (...) {
123 delete m_keyState;
124 delete m_desks;
125 delete m_screensaver;
126 destroyWindow(m_window);
127 destroyClass(m_class);
128 s_screen = nullptr;
129 throw;
130 }
131
132 // install event handlers
133 m_events->addHandler(EventTypes::System, m_events->getSystemTarget(), [this](const auto &e) {
134 handleSystemEvent(e);
135 });
136
137 // install the platform event queue
138 m_events->adoptBuffer(new MSWindowsEventQueueBuffer(m_events));
139}

Callers

nothing calls this directly

Calls 6

loadLibraryMethod · 0.80
addHandlerMethod · 0.80
getSystemTargetMethod · 0.80
adoptBufferMethod · 0.80
getKeyboardLayoutListMethod · 0.45
disableSleepMethod · 0.45

Tested by

no test coverage detected