diff options
author | 杨宇千 <crupest@outlook.com> | 2019-09-08 22:24:28 +0800 |
---|---|---|
committer | 杨宇千 <crupest@outlook.com> | 2019-09-08 22:24:28 +0800 |
commit | a8ba16ddab3291e59a33b36405462094f8cdf5bc (patch) | |
tree | aa849cdc1f9b4f7a0aa150f562b2e618c63ecceb /src/win | |
parent | 8b9a306d6f24dbc08aeee16b115260406e79126d (diff) | |
download | cru-a8ba16ddab3291e59a33b36405462094f8cdf5bc.tar.gz cru-a8ba16ddab3291e59a33b36405462094f8cdf5bc.tar.bz2 cru-a8ba16ddab3291e59a33b36405462094f8cdf5bc.zip |
...
Diffstat (limited to 'src/win')
-rw-r--r-- | src/win/CMakeLists.txt | 3 | ||||
-rw-r--r-- | src/win/debug.cpp | 9 | ||||
-rw-r--r-- | src/win/debug_logger.hpp | 20 | ||||
-rw-r--r-- | src/win/native/cursor.cpp | 12 | ||||
-rw-r--r-- | src/win/native/native_window.cpp | 7 | ||||
-rw-r--r-- | src/win/native/ui_application.cpp | 5 |
6 files changed, 36 insertions, 20 deletions
diff --git a/src/win/CMakeLists.txt b/src/win/CMakeLists.txt index d7d4ba96..8c58954d 100644 --- a/src/win/CMakeLists.txt +++ b/src/win/CMakeLists.txt @@ -1,7 +1,8 @@ set(CRU_WIN_BASE_INCLUDE_DIR ${CRU_INCLUDE_DIR}/cru/win/) add_library(cru_win_base STATIC - debug.cpp + debug_logger.hpp + exception.cpp heap_debug.cpp string_util.cpp diff --git a/src/win/debug.cpp b/src/win/debug.cpp deleted file mode 100644 index e15b1f6c..00000000 --- a/src/win/debug.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#include "cru/win/win_pre_config.hpp" - -#include "cru/platform/debug.hpp" - -namespace cru::platform { -void DebugMessage(const std::wstring_view& message) { - ::OutputDebugStringW(message.data()); -} -} // namespace cru::platform diff --git a/src/win/debug_logger.hpp b/src/win/debug_logger.hpp new file mode 100644 index 00000000..ab6a2266 --- /dev/null +++ b/src/win/debug_logger.hpp @@ -0,0 +1,20 @@ +#include "cru/win/win_pre_config.hpp" + +#include "cru/common/logger.hpp" + +namespace cru::platform::win { + +class WinDebugLoggerSource : public ::cru::log::ILoggerSource { + public: + WinDebugLoggerSource() = default; + + CRU_DELETE_COPY(WinDebugLoggerSource) + CRU_DELETE_MOVE(WinDebugLoggerSource) + + ~WinDebugLoggerSource() = default; + + void Write(::cru::log::LogLevel level, const std::wstring_view& s) override { + ::OutputDebugStringW(s.data()); + } +}; +} // namespace cru::platform::win diff --git a/src/win/native/cursor.cpp b/src/win/native/cursor.cpp index 8c0e393b..a0f9dd6c 100644 --- a/src/win/native/cursor.cpp +++ b/src/win/native/cursor.cpp @@ -1,7 +1,7 @@ #include "cru/win/native/cursor.hpp" #include "cru/common/format.hpp" -#include "cru/platform/debug.hpp" +#include "cru/common/logger.hpp" #include "cru/win/native/exception.hpp" #include <stdexcept> @@ -15,17 +15,17 @@ WinCursor::WinCursor(HCURSOR handle, bool auto_delete) { WinCursor::~WinCursor() { if (auto_delete_) { if (!::DestroyCursor(handle_)) { - DebugMessage( - util::Format(L"Failed to destroy a cursor. Last error code: {}", - ::GetLastError())); // This is not a fetal error but - // might still need notice. + // This is not a fetal error but might still need notice. + log::Warn(L"Failed to destroy a cursor. Last error code: {}", + ::GetLastError()); } } } namespace { WinCursor* LoadWinCursor(const wchar_t* name) { - const auto handle = static_cast<HCURSOR>(::LoadImageW(NULL, name, IMAGE_CURSOR, SM_CYCURSOR, SM_CYCURSOR, LR_SHARED)); + const auto handle = static_cast<HCURSOR>(::LoadImageW( + NULL, name, IMAGE_CURSOR, SM_CYCURSOR, SM_CYCURSOR, LR_SHARED)); if (handle == NULL) { throw Win32Error(::GetLastError(), "Failed to get system cursor."); } diff --git a/src/win/native/native_window.cpp b/src/win/native/native_window.cpp index 6a02c2fc..149d9158 100644 --- a/src/win/native/native_window.cpp +++ b/src/win/native/native_window.cpp @@ -1,7 +1,7 @@ #include "cru/win/native/native_window.hpp" #include "cru/common/format.hpp" -#include "cru/platform/debug.hpp" +#include "cru/common/logger.hpp" #include "cru/win/graph/direct/graph_factory.hpp" #include "cru/win/native/cursor.hpp" #include "cru/win/native/exception.hpp" @@ -169,12 +169,11 @@ void WinNativeWindow::SetCursor(std::shared_ptr<Cursor> cursor) { WinCursor* c = static_cast<WinCursor*>(cursor.get()); auto outputError = [] { - DebugMessage(util::Format(util::Format( - L"Failed to set cursor. Last error code: {}.", ::GetLastError()))); + log::Debug(L"Failed to set cursor. Last error code: {}.", ::GetLastError()); }; if (!::SetClassLongPtrW(hwnd_, GCLP_HCURSOR, - reinterpret_cast<LONG_PTR>(c->GetHandle()))) { + reinterpret_cast<LONG_PTR>(c->GetHandle()))) { outputError(); return; } diff --git a/src/win/native/ui_application.cpp b/src/win/native/ui_application.cpp index fdc0aace..c2d3ac2c 100644 --- a/src/win/native/ui_application.cpp +++ b/src/win/native/ui_application.cpp @@ -1,5 +1,7 @@ #include "cru/win/native/ui_application.hpp" +#include "../debug_logger.hpp" +#include "cru/common/logger.hpp" #include "cru/win/graph/direct/graph_factory.hpp" #include "cru/win/native/exception.hpp" #include "cru/win/native/god_window.hpp" @@ -38,6 +40,9 @@ WinUiApplication::WinUiApplication(HINSTANCE h_instance) : h_instance_(h_instance) { assert(instance == nullptr); + log::Logger::GetInstance()->AddSource( + new ::cru::platform::win::WinDebugLoggerSource()); + if (!::IsWindows8OrGreater()) throw std::runtime_error("Must run on Windows 8 or later."); |