Merge remote-tracking branch 'openconsole/inbox' into main

This commit is contained in:
Dustin Howett 2022-06-24 17:45:57 -05:00
commit 9e8427d81e
18 changed files with 178 additions and 9 deletions

View File

@ -101,6 +101,7 @@ MENUCOMMAND
MENUDATA
MENUITEMINFOW
MENUINFO
mmeapi
MOUSELEAVE
mov
mptt

2
src/audio/dirs Normal file
View File

@ -0,0 +1,2 @@
DIRS=midi \

2
src/audio/midi/dirs Normal file
View File

@ -0,0 +1,2 @@
DIRS=lib \

View File

@ -0,0 +1,8 @@
!include ..\sources.inc
# -------------------------------------
# Program Information
# -------------------------------------
TARGETNAME = ConAudioMidi
TARGETTYPE = LIBRARY

View File

@ -26,5 +26,6 @@ Abstract:
// Windows Header Files:
#include <windows.h>
#include <mmeapi.h>
// clang-format on

View File

@ -0,0 +1,28 @@
!include ..\..\..\project.inc
# -------------------------------------
# Windows Console
# - Console Audio Functions
# -------------------------------------
# -------------------------------------
# Build System Settings
# -------------------------------------
# Code in the OneCore depot automatically excludes default Win32 libraries.
# -------------------------------------
# Sources, Headers, and Libraries
# -------------------------------------
PRECOMPILED_CXX = 1
PRECOMPILED_INCLUDE = ..\precomp.h
SOURCES = \
..\MidiAudio.cpp \
INCLUDES = \
$(INCLUDES); \
..; \
..\..\..\inc; \
$(MINWIN_INTERNAL_PRIV_SDK_INC_PATH_L); \

View File

@ -1,6 +1,7 @@
DIRS=\
staging \
buffer \
audio \
interactivity \
host \
propsheet \

View File

@ -48,3 +48,11 @@ SOURCES = \
# Autogenerated. Sets file name for Device Guard whitelisting effort, used in RC.exe.
C_DEFINES=$(C_DEFINES) -D___TARGETNAME="""$(TARGETNAME).$(TARGETTYPE)"""
MUI_VERIFY_NO_LOC_RESOURCE=1
TARGETLIBS = \
$(TARGETLIBS) \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-rtcore-ntuser-dpi-l1.lib \
DELAYLOAD = \
$(DELAYLOAD) \
ext-ms-win-rtcore-ntuser-dpi-l1.dll; \

View File

@ -220,7 +220,7 @@ void IntegrityTest::_TestValidationHelper(const bool fIsBlockExpected,
wistd::unique_ptr<wchar_t[]> stringData = wil::make_unique_nothrow<wchar_t[]>(cch);
THROW_IF_NULL_ALLOC(stringData);
til::point coordRead;
COORD coordRead = { 0 };
for (coordRead.Y = 0; coordRead.Y < 8; coordRead.Y++)
{
ZeroMemory(stringData.get(), sizeof(wchar_t) * cch);

View File

@ -185,6 +185,7 @@ TARGETLIBS = \
$(CONSOLE_OBJ_PATH)\terminal\input\lib\$(O)\ConTermInput.lib \
$(WINCORE_OBJ_PATH)\console\open\src\terminal\adapter\lib\$(O)\ConTermAdapter.lib \
$(WINCORE_OBJ_PATH)\console\open\src\terminal\parser\lib\$(O)\ConTermParser.lib \
$(WINCORE_OBJ_PATH)\console\open\src\audio\midi\lib\$(O)\ConAudioMidi.lib \
$(WINCORE_OBJ_PATH)\console\open\src\renderer\base\lib\$(O)\ConRenderBase.lib \
$(WINCORE_OBJ_PATH)\console\open\src\renderer\gdi\lib\$(O)\ConRenderGdi.lib \
$(WINCORE_OBJ_PATH)\console\open\src\renderer\vt\lib\$(O)\ConRenderVt.lib \

View File

@ -41,6 +41,13 @@ void ServiceLocator::SetOneCoreTeardownFunction(void (*pfn)()) noexcept
[[noreturn]] void ServiceLocator::RundownAndExit(const HRESULT hr)
{
// MSFT:40146639
// The premise of this function is that 1 thread enters and 0 threads leave alive.
// We need to prevent anyone from calling us until we actually ExitProcess(),
// so that we don't TriggerTeardown() twice. LockConsole() can't be used here,
// because doing so would prevent the render thread from progressing.
AcquireSRWLockExclusive(&s_shutdownLock);
// MSFT:15506250
// In VT I/O Mode, a client application might die before we've rendered
// the last bit of text they've emitted. So give the VtRenderer one
@ -72,6 +79,7 @@ void ServiceLocator::SetOneCoreTeardownFunction(void (*pfn)()) noexcept
// TODO: MSFT: 14397093 - Expand graceful rundown beyond just the Hot Bug input services case.
delete s_globals.pRender;
s_globals.pRender = nullptr;
if (s_oneCoreTeardownFunction)
{

View File

@ -113,5 +113,7 @@ namespace Microsoft::Console::Interactivity
static Globals s_globals;
static bool s_pseudoWindowInitialized;
static wil::unique_hwnd s_pseudoWindow;
static inline SRWLOCK s_shutdownLock = SRWLOCK_INIT;
};
}

View File

@ -84,6 +84,7 @@ TARGETLIBS = \
$(WINCORE_OBJ_PATH)\console\open\src\terminal\adapter\lib\$(O)\ConTermAdapter.lib \
$(WINCORE_OBJ_PATH)\console\open\src\terminal\input\lib\$(O)\ConTermInput.lib \
$(WINCORE_OBJ_PATH)\console\open\src\terminal\parser\lib\$(O)\ConTermParser.lib \
$(WINCORE_OBJ_PATH)\console\open\src\audio\midi\lib\$(O)\ConAudioMidi.lib \
$(WINCORE_OBJ_PATH)\console\open\src\renderer\base\lib\$(O)\ConRenderBase.lib \
$(WINCORE_OBJ_PATH)\console\open\src\renderer\gdi\lib\$(O)\ConRenderGdi.lib \
$(WINCORE_OBJ_PATH)\console\open\src\renderer\vt\lib\$(O)\ConRenderVt.lib \

View File

@ -19,6 +19,8 @@ C_DEFINES = $(C_DEFINES) -DUNICODE -D_UNICODE -DFMT_HEADER_ONLY -D
USE_UNICRT = 1
USE_MSVCRT = 1
NO_WCHAR_T = 1 # use native wchar_t
USE_CXX17_STD_BYTE = 1 # Windows disables std::byte by default...
USE_STL = 1
STL_VER = STL_VER_CURRENT

View File

@ -3,16 +3,13 @@
#pragma once
#ifndef NOMINMAX
#define NOMINMAX
#endif
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#include <dxgi1_2.h>
#include <d3d11.h>
#include <d2d1.h>
#include <d2d1helper.h>
#include <dwrite.h>
#endif
#ifdef __INSIDE_WINDOWS
#include <nt.h>
@ -21,6 +18,17 @@
#include <dxgidwm.h>
#include <condrv.h>
#else
#include <Windows.h>
#include <unknwn.h>
#endif
#include <dxgi1_2.h>
#include <d3d11.h>
#include <d2d1.h>
#include <d2d1helper.h>
#include <dwrite.h>
#ifndef __INSIDE_WINDOWS
#include "oss_shim.h"
#endif

View File

@ -9,6 +9,9 @@
#pragma warning(disable : 26440)
#pragma warning(disable : 26455)
// We end up including ApiMessage.h somehow, which uses nameless unions
#pragma warning(disable : 4201)
#include "InteractDispatch.hpp"
#include "../../host/conddkrefs.h"
#include "../../interactivity/inc/ServiceLocator.hpp"

View File

@ -41,14 +41,104 @@ TARGETLIBS = \
$(ONECORE_INTERNAL_SDK_LIB_PATH)\onecoreuuid.lib \
$(ONECOREUAP_INTERNAL_SDK_LIB_PATH)\onecoreuapuuid.lib \
$(ONECORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\onecore_internal.lib \
$(ONECOREUAP_EXTERNAL_SDK_LIB_PATH)\propsys.lib \
$(ONECOREUAP_EXTERNAL_SDK_LIB_PATH)\d2d1.lib \
$(ONECOREUAP_EXTERNAL_SDK_LIB_PATH)\dwrite.lib \
$(ONECOREUAP_EXTERNAL_SDK_LIB_PATH)\dxgi.lib \
$(ONECOREUAP_EXTERNAL_SDK_LIB_PATH)\d3d11.lib \
$(ONECOREUAP_EXTERNAL_SDK_LIB_PATH)\d3dcompiler.lib \
$(MODERNCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\api-ms-win-mm-playsound-l1.lib \
$(ONECORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-dwmapi-ext-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-edputil-policy-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-gdi-dc-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-gdi-dc-create-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-gdi-draw-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-gdi-font-l1.lib \
$(ONECOREWINDOWS_INTERNAL_LIB_PATH_L)\ext-ms-win-gdi-internal-desktop-l1-1-0.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-ntuser-caret-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-ntuser-dialogbox-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-ntuser-draw-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-ntuser-gui-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-ntuser-menu-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-ntuser-misc-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-ntuser-mouse-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-ntuser-rectangle-ext-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-ntuser-server-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-ntuser-window-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-rtcore-gdi-object-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-rtcore-gdi-rgn-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-rtcore-ntuser-cursor-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-rtcore-ntuser-dc-access-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-rtcore-ntuser-rawinput-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-rtcore-ntuser-sysparams-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-rtcore-ntuser-window-ext-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-rtcore-ntuser-winstamin-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-shell-shell32-l1.lib \
$(MINCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-uxtheme-themes-l1.lib \
$(ONECORESHELL_INTERNAL_LIB_VPATH_L)\api-ms-win-shell-dataobject-l1.lib \
$(ONECORESHELL_INTERNAL_LIB_VPATH_L)\api-ms-win-shell-namespace-l1.lib \
$(MODERNCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-uiacore-l1.lib \
$(MODERNCORE_INTERNAL_PRIV_SDK_LIB_VPATH_L)\ext-ms-win-usp10-l1.lib \
$(WINCORE_OBJ_PATH)\console\conint\$(O)\conint.lib \
$(WINCORE_OBJ_PATH)\console\open\src\buffer\out\lib\$(O)\conbufferout.lib \
$(WINCORE_OBJ_PATH)\console\open\src\host\lib\$(O)\conhostv2.lib \
$(WINCORE_OBJ_PATH)\console\open\src\tsf\$(O)\contsf.lib \
$(WINCORE_OBJ_PATH)\console\open\src\propslib\$(O)\conprops.lib \
$(WINCORE_OBJ_PATH)\console\open\src\terminal\adapter\lib\$(O)\ConTermAdapter.lib \
$(WINCORE_OBJ_PATH)\console\open\src\terminal\input\lib\$(O)\ConTermInput.lib \
$(WINCORE_OBJ_PATH)\console\open\src\terminal\parser\lib\$(O)\ConTermParser.lib \
$(WINCORE_OBJ_PATH)\console\open\src\audio\midi\lib\$(O)\ConAudioMidi.lib \
$(WINCORE_OBJ_PATH)\console\open\src\renderer\base\lib\$(O)\ConRenderBase.lib \
$(WINCORE_OBJ_PATH)\console\open\src\renderer\gdi\lib\$(O)\ConRenderGdi.lib \
$(WINCORE_OBJ_PATH)\console\open\src\renderer\wddmcon\lib\$(O)\ConRenderWddmCon.lib \
$(WINCORE_OBJ_PATH)\console\open\src\renderer\vt\lib\$(O)\ConRenderVt.lib \
$(WINCORE_OBJ_PATH)\console\open\src\server\lib\$(O)\ConServer.lib \
$(WINCORE_OBJ_PATH)\console\open\src\interactivity\base\lib\$(O)\ConInteractivityBaseLib.lib \
$(WINCORE_OBJ_PATH)\console\open\src\interactivity\win32\lib\$(O)\ConInteractivityWin32Lib.lib \
$(WINCORE_OBJ_PATH)\console\open\src\interactivity\onecore\lib\$(O)\ConInteractivityOneCoreLib.lib \
$(WINCORE_OBJ_PATH)\console\open\src\types\lib\$(O)\ConTypes.lib \
DELAYLOAD = \
PROPSYS.dll; \
D2D1.dll; \
DWrite.dll; \
DXGI.dll; \
D3D11.dll; \
OLEAUT32.dll; \
api-ms-win-mm-playsound-l1.dll; \
api-ms-win-shcore-scaling-l1.dll; \
api-ms-win-shell-dataobject-l1.dll; \
api-ms-win-shell-namespace-l1.dll; \
ext-ms-win-dwmapi-ext-l1.dll; \
ext-ms-win-edputil-policy-l1.dll; \
ext-ms-win-usp10-l1.dll; \
ext-ms-win-gdi-dc-l1.dll; \
ext-ms-win-gdi-dc-create-l1.dll; \
ext-ms-win-gdi-draw-l1.dll; \
ext-ms-win-gdi-font-l1.dll; \
ext-ms-win-gdi-internal-desktop-l1.dll; \
ext-ms-win-ntuser-caret-l1.dll; \
ext-ms-win-ntuser-dialogbox-l1.dll; \
ext-ms-win-ntuser-draw-l1.dll; \
ext-ms-win-ntuser-keyboard-l1.dll; \
ext-ms-win-ntuser-gui-l1.dll; \
ext-ms-win-ntuser-menu-l1.dll; \
ext-ms-win-ntuser-misc-l1.dll; \
ext-ms-win-ntuser-mouse-l1.dll; \
ext-ms-win-ntuser-rectangle-ext-l1.dll; \
ext-ms-win-ntuser-server-l1.dll; \
ext-ms-win-ntuser-window-l1.dll; \
ext-ms-win-rtcore-gdi-object-l1.dll; \
ext-ms-win-rtcore-gdi-rgn-l1.dll; \
ext-ms-win-rtcore-ntuser-cursor-l1.dll; \
ext-ms-win-rtcore-ntuser-dc-access-l1.dll; \
ext-ms-win-rtcore-ntuser-rawinput-l1.dll; \
ext-ms-win-rtcore-ntuser-sysparams-l1.dll; \
ext-ms-win-rtcore-ntuser-window-ext-l1.dll; \
ext-ms-win-rtcore-ntuser-winstamin-l1.dll; \
ext-ms-win-shell-shell32-l1.dll; \
ext-ms-win-uiacore-l1.dll; \
ext-ms-win-uxtheme-themes-l1.dll; \
DLOAD_ERROR_HANDLER = kernelbase

View File

@ -1101,6 +1101,9 @@ void InputEngineTest::VerifySGRMouseData(const std::vector<std::tuple<SGR_PARAMS
auto dispatch = std::make_unique<TestInteractDispatch>(pfn, &testState);
auto inputEngine = std::make_unique<InputStateMachineEngine>(std::move(dispatch));
// The tests may be running somewhere that doesn't report anything for GetDoubleClickTime.
// Let's force it to a high value to make the double click tests pass.
inputEngine->_doubleClickTime = std::chrono::milliseconds(1000);
auto _stateMachine = std::make_unique<StateMachine>(std::move(inputEngine));
VERIFY_IS_NOT_NULL(_stateMachine);
testState._stateMachine = _stateMachine.get();