aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/cru/common/platform/win/DebugLogTarget.h25
-rw-r--r--include/cru/win/DebugLogger.h24
-rw-r--r--include/cru/win/StdOutLogger.h23
-rw-r--r--include/cru/win/gui/Clipboard.h1
-rw-r--r--src/common/CMakeLists.txt3
-rw-r--r--src/common/log/Logger.cpp8
-rw-r--r--src/common/log/StdioLogTarget.cpp5
-rw-r--r--src/common/platform/win/DebugLogTarget.cpp10
-rw-r--r--src/win/ForDllExport.cpp2
-rw-r--r--src/win/gui/Clipboard.cpp17
-rw-r--r--src/win/gui/UiApplication.cpp7
-rw-r--r--src/win/gui/Window.cpp10
12 files changed, 64 insertions, 71 deletions
diff --git a/include/cru/common/platform/win/DebugLogTarget.h b/include/cru/common/platform/win/DebugLogTarget.h
new file mode 100644
index 00000000..8257f637
--- /dev/null
+++ b/include/cru/common/platform/win/DebugLogTarget.h
@@ -0,0 +1,25 @@
+#pragma once
+
+#include "../../PreConfig.h"
+#ifdef CRU_PLATFORM_WINDOWS
+
+#include "WinPreConfig.h"
+
+#include "../../log/Logger.h"
+
+namespace cru::platform::win {
+
+class CRU_BASE_API WinDebugLogTarget : public ::cru::log::ILogTarget {
+ public:
+ WinDebugLogTarget() = default;
+
+ CRU_DELETE_COPY(WinDebugLogTarget)
+ CRU_DELETE_MOVE(WinDebugLogTarget)
+
+ ~WinDebugLogTarget() = default;
+
+ void Write(::cru::log::LogLevel level, StringView s) override;
+};
+} // namespace cru::platform::win
+
+#endif
diff --git a/include/cru/win/DebugLogger.h b/include/cru/win/DebugLogger.h
deleted file mode 100644
index 43e08f20..00000000
--- a/include/cru/win/DebugLogger.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#pragma once
-#include "Base.h"
-
-#include "cru/common/log/Logger.h"
-
-namespace cru::platform::win {
-
-class CRU_WIN_API WinDebugLoggerSource : public ::cru::log::ILogSource {
- public:
- WinDebugLoggerSource() = default;
-
- CRU_DELETE_COPY(WinDebugLoggerSource)
- CRU_DELETE_MOVE(WinDebugLoggerSource)
-
- ~WinDebugLoggerSource() = default;
-
- void Write(::cru::log::LogLevel level, StringView s) override {
- CRU_UNUSED(level)
-
- String m = s.ToString();
- ::OutputDebugStringW(reinterpret_cast<const wchar_t*>(m.c_str()));
- }
-};
-} // namespace cru::platform::win
diff --git a/include/cru/win/StdOutLogger.h b/include/cru/win/StdOutLogger.h
deleted file mode 100644
index d6009bb3..00000000
--- a/include/cru/win/StdOutLogger.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#pragma once
-#include "Base.h"
-
-#include "cru/common/log/Logger.h"
-
-namespace cru::platform::win {
-class CRU_WIN_API WinStdOutLoggerSource : public ::cru::log::ILogSource {
- public:
- WinStdOutLoggerSource() = default;
-
- CRU_DELETE_COPY(WinStdOutLoggerSource)
- CRU_DELETE_MOVE(WinStdOutLoggerSource)
-
- ~WinStdOutLoggerSource() = default;
-
- void Write(::cru::log::LogLevel level, StringView s) override {
- CRU_UNUSED(level)
-
- String m = s.ToString();
- std::fputws(reinterpret_cast<const wchar_t*>(m.c_str()), stdout);
- }
-};
-} // namespace cru::platform::win
diff --git a/include/cru/win/gui/Clipboard.h b/include/cru/win/gui/Clipboard.h
index 7580642b..ef05e0f1 100644
--- a/include/cru/win/gui/Clipboard.h
+++ b/include/cru/win/gui/Clipboard.h
@@ -6,6 +6,7 @@
namespace cru::platform::gui::win {
class WinClipboard : public WinNativeResource, public virtual IClipboard {
+ CRU_DEFINE_CLASS_LOG_TAG(u"WinClipboard")
public:
explicit WinClipboard(WinUiApplication* application);
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index 330c7226..ae418f6b 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -37,8 +37,9 @@ if (WIN32)
target_sources(cru_base PRIVATE
platform/win/BridgeComStream.cpp
platform/win/ComAutoInit.cpp
- platform/win/StreamConvert.cpp
+ platform/win/DebugLogTarget.cpp
platform/win/Exception.cpp
+ platform/win/StreamConvert.cpp
platform/win/Win32FileStream.cpp
)
diff --git a/src/common/log/Logger.cpp b/src/common/log/Logger.cpp
index bcafde21..e13cb122 100644
--- a/src/common/log/Logger.cpp
+++ b/src/common/log/Logger.cpp
@@ -5,12 +5,20 @@
#include <cstdlib>
#include <ctime>
+#ifdef CRU_PLATFORM_WINDOWS
+#include "cru/common/platform/win/DebugLogTarget.h"
+#endif
+
namespace cru::log {
Logger *Logger::GetInstance() {
static Logger logger;
logger.AddLogTarget(std::make_unique<StdioLogTarget>());
+#ifdef CRU_PLATFORM_WINDOWS
+ logger.AddLogTarget(std::make_unique<platform::win::WinDebugLogTarget>());
+#endif
+
return &logger;
}
diff --git a/src/common/log/StdioLogTarget.cpp b/src/common/log/StdioLogTarget.cpp
index ad29a3ce..7f99dbd1 100644
--- a/src/common/log/StdioLogTarget.cpp
+++ b/src/common/log/StdioLogTarget.cpp
@@ -9,6 +9,11 @@ StdioLogTarget::~StdioLogTarget() {}
void StdioLogTarget::Write(log::LogLevel level, StringView s) {
#ifdef CRU_PLATFORM_WINDOWS
+ if (level == log::LogLevel::Error) {
+ std::wcerr.write(reinterpret_cast<const wchar_t*>(s.data()), s.size());
+ } else {
+ std::wcout.write(reinterpret_cast<const wchar_t*>(s.data()), s.size());
+ }
#else
std::string m = s.ToUtf8();
diff --git a/src/common/platform/win/DebugLogTarget.cpp b/src/common/platform/win/DebugLogTarget.cpp
new file mode 100644
index 00000000..92d26449
--- /dev/null
+++ b/src/common/platform/win/DebugLogTarget.cpp
@@ -0,0 +1,10 @@
+#include "cru/common/platform/win/DebugLogTarget.h"
+
+namespace cru::platform::win {
+void WinDebugLogTarget::Write(::cru::log::LogLevel level, StringView s) {
+ CRU_UNUSED(level)
+
+ String m = s.ToString();
+ ::OutputDebugStringW(reinterpret_cast<const wchar_t*>(m.c_str()));
+}
+} // namespace cru::platform::win
diff --git a/src/win/ForDllExport.cpp b/src/win/ForDllExport.cpp
index db1a7cad..e69de29b 100644
--- a/src/win/ForDllExport.cpp
+++ b/src/win/ForDllExport.cpp
@@ -1,2 +0,0 @@
-#include "cru/win/DebugLogger.h"
-#include "cru/win/StdOutLogger.h"
diff --git a/src/win/gui/Clipboard.cpp b/src/win/gui/Clipboard.cpp
index 7ecc9dea..6eab903c 100644
--- a/src/win/gui/Clipboard.cpp
+++ b/src/win/gui/Clipboard.cpp
@@ -1,5 +1,4 @@
#include "cru/win/gui/Clipboard.h"
-#include <winuser.h>
#include "cru/common/log/Logger.h"
#include "cru/win/gui/GodWindow.h"
#include "cru/win/gui/UiApplication.h"
@@ -14,25 +13,25 @@ String WinClipboard::GetText() {
auto god_window = application_->GetGodWindow();
if (!::OpenClipboard(god_window->GetHandle())) {
- log::Warn(u"Failed to open clipboard.");
+ CRU_LOG_WARN(u"Failed to open clipboard.");
return {};
}
if (!::IsClipboardFormatAvailable(CF_UNICODETEXT)) {
- log::Warn(u"Clipboard format for text is not available.");
+ CRU_LOG_WARN(u"Clipboard format for text is not available.");
return {};
}
auto handle = ::GetClipboardData(CF_UNICODETEXT);
if (handle == nullptr) {
- log::Warn(u"Failed to get clipboard data.");
+ CRU_LOG_WARN(u"Failed to get clipboard data.");
return {};
}
auto ptr = ::GlobalLock(handle);
if (ptr == nullptr) {
- log::Warn(u"Failed to lock clipboard data.");
+ CRU_LOG_WARN(u"Failed to lock clipboard data.");
::CloseClipboard();
return {};
}
@@ -49,21 +48,21 @@ void WinClipboard::SetText(String text) {
auto god_window = application_->GetGodWindow();
if (!::OpenClipboard(god_window->GetHandle())) {
- log::Warn(u"Failed to open clipboard.");
+ CRU_LOG_WARN(u"Failed to open clipboard.");
return;
}
auto handle = GlobalAlloc(GMEM_MOVEABLE, (text.size() + 1) * sizeof(wchar_t));
if (handle == nullptr) {
- log::Warn(u"Failed to allocate clipboard data.");
+ CRU_LOG_WARN(u"Failed to allocate clipboard data.");
::CloseClipboard();
return;
}
auto ptr = ::GlobalLock(handle);
if (ptr == nullptr) {
- log::Warn(u"Failed to lock clipboard data.");
+ CRU_LOG_WARN(u"Failed to lock clipboard data.");
::GlobalFree(handle);
::CloseClipboard();
return;
@@ -74,7 +73,7 @@ void WinClipboard::SetText(String text) {
::GlobalUnlock(handle);
if (::SetClipboardData(CF_UNICODETEXT, handle) == nullptr) {
- log::Warn(u"Failed to set clipboard data.");
+ CRU_LOG_WARN(u"Failed to set clipboard data.");
}
::CloseClipboard();
diff --git a/src/win/gui/UiApplication.cpp b/src/win/gui/UiApplication.cpp
index 8c2dfae7..1c9321b6 100644
--- a/src/win/gui/UiApplication.cpp
+++ b/src/win/gui/UiApplication.cpp
@@ -4,8 +4,6 @@
#include "WindowManager.h"
#include "cru/common/log/Logger.h"
#include "cru/platform/Check.h"
-#include "cru/win/DebugLogger.h"
-#include "cru/win/StdOutLogger.h"
#include "cru/win/graphics/direct/Factory.h"
#include "cru/win/gui/Base.h"
#include "cru/win/gui/Clipboard.h"
@@ -33,11 +31,6 @@ WinUiApplication::WinUiApplication() {
::SetThreadDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE);
- log::Logger::GetInstance()->AddSource(
- std::make_unique<::cru::platform::win::WinDebugLoggerSource>());
- log::Logger::GetInstance()->AddSource(
- std::make_unique<::cru::platform::win::WinStdOutLoggerSource>());
-
graph_factory_ = std::make_unique<
cru::platform::graphics::win::direct::DirectGraphicsFactory>();
diff --git a/src/win/gui/Window.cpp b/src/win/gui/Window.cpp
index 9c86441e..cc2038ec 100644
--- a/src/win/gui/Window.cpp
+++ b/src/win/gui/Window.cpp
@@ -235,9 +235,9 @@ void WinNativeWindow::SetCursor(std::shared_ptr<ICursor> cursor) {
if (!::SetClassLongPtrW(hwnd_, GCLP_HCURSOR,
reinterpret_cast<LONG_PTR>(cursor_->GetHandle()))) {
CRU_LOG_WARN(
- u"Failed to set cursor because failed to set class long. Last "
- u"error code: {}.",
- ::GetLastError());
+ u"Failed to set cursor because failed to set class long. Last "
+ u"error code: {}.",
+ ::GetLastError());
return;
}
@@ -245,7 +245,7 @@ void WinNativeWindow::SetCursor(std::shared_ptr<ICursor> cursor) {
auto lg = [](StringView reason) {
CRU_LOG_WARN(
-
+
u"Failed to set cursor because {} when window is visible. (We need to "
u"update cursor if it is inside the window.) Last error code: {}.",
reason, ::GetLastError());
@@ -477,7 +477,7 @@ void WinNativeWindow::RecreateWindow() {
if (dpi == 0)
throw Win32Error(::GetLastError(), u"Failed to get dpi of window.");
dpi_ = static_cast<float>(dpi);
- log::Debug(u"Dpi of window is {}.", dpi_);
+ CRU_LOG_DEBUG(u"Dpi of window is {}.", dpi_);
window_manager->RegisterWindow(hwnd_, this);