aboutsummaryrefslogtreecommitdiff
path: root/src/win
diff options
context:
space:
mode:
author杨宇千 <crupest@outlook.com>2019-09-08 22:24:28 +0800
committer杨宇千 <crupest@outlook.com>2019-09-08 22:24:28 +0800
commita8ba16ddab3291e59a33b36405462094f8cdf5bc (patch)
treeaa849cdc1f9b4f7a0aa150f562b2e618c63ecceb /src/win
parent8b9a306d6f24dbc08aeee16b115260406e79126d (diff)
downloadcru-a8ba16ddab3291e59a33b36405462094f8cdf5bc.tar.gz
cru-a8ba16ddab3291e59a33b36405462094f8cdf5bc.tar.bz2
cru-a8ba16ddab3291e59a33b36405462094f8cdf5bc.zip
...
Diffstat (limited to 'src/win')
-rw-r--r--src/win/CMakeLists.txt3
-rw-r--r--src/win/debug.cpp9
-rw-r--r--src/win/debug_logger.hpp20
-rw-r--r--src/win/native/cursor.cpp12
-rw-r--r--src/win/native/native_window.cpp7
-rw-r--r--src/win/native/ui_application.cpp5
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.");