aboutsummaryrefslogtreecommitdiffstats
path: root/support/hololens
diff options
context:
space:
mode:
authorPaul Rouget <me@paulrouget.com>2020-06-08 12:32:00 +0200
committerPaul Rouget <me@paulrouget.com>2020-06-11 07:54:57 +0200
commit805b79b32ca009d7c8afc45a02e155d3f925d86c (patch)
tree5fd9c72471832b685f3f75bbf554f064130c6086 /support/hololens
parent60ee588c71c6bba9871efaaf0ef68ae05e3e175f (diff)
downloadservo-805b79b32ca009d7c8afc45a02e155d3f925d86c.tar.gz
servo-805b79b32ca009d7c8afc45a02e155d3f925d86c.zip
log and format for wstrings.
Diffstat (limited to 'support/hololens')
-rw-r--r--support/hololens/ServoApp/BrowserPage.cpp4
-rw-r--r--support/hololens/ServoApp/ServoApp.vcxproj3
-rw-r--r--support/hololens/ServoApp/ServoApp.vcxproj.filters3
-rw-r--r--support/hololens/ServoApp/ServoControl/OpenGLES.cpp4
-rw-r--r--support/hololens/ServoApp/ServoControl/Servo.cpp2
-rw-r--r--support/hololens/ServoApp/ServoControl/Servo.h2
-rw-r--r--support/hololens/ServoApp/ServoControl/ServoControl.cpp20
-rw-r--r--support/hololens/ServoApp/logs.cpp27
-rw-r--r--support/hololens/ServoApp/logs.h7
-rw-r--r--support/hololens/ServoApp/strutils.h22
10 files changed, 37 insertions, 57 deletions
diff --git a/support/hololens/ServoApp/BrowserPage.cpp b/support/hololens/ServoApp/BrowserPage.cpp
index a2b13bf60b9..31a056be648 100644
--- a/support/hololens/ServoApp/BrowserPage.cpp
+++ b/support/hololens/ServoApp/BrowserPage.cpp
@@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
#include "pch.h"
-#include "logs.h"
+#include "strutils.h"
#include "BrowserPage.h"
#include "BrowserPage.g.cpp"
#include "DefaultUrl.h"
@@ -103,7 +103,7 @@ void BrowserPage::LoadServoURI(Uri uri) {
auto scheme = uri.SchemeName();
if (scheme != SERVO_SCHEME) {
- log("Unexpected URL: ", uri.RawUri().c_str());
+ log(L"Unexpected URL: ", uri.RawUri().c_str());
return;
}
std::wstring raw{uri.RawUri()};
diff --git a/support/hololens/ServoApp/ServoApp.vcxproj b/support/hololens/ServoApp/ServoApp.vcxproj
index 9d0c1c7716b..04c559bfa01 100644
--- a/support/hololens/ServoApp/ServoApp.vcxproj
+++ b/support/hololens/ServoApp/ServoApp.vcxproj
@@ -119,7 +119,7 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
- <ClInclude Include="logs.h" />
+ <ClInclude Include="strutils.h" />
<ClInclude Include="pch.h" />
<ClInclude Include="App.h">
<DependentUpon>App.xaml</DependentUpon>
@@ -923,7 +923,6 @@
<DependentUpon>BrowserPage.xaml</DependentUpon>
</ClCompile>
<ClCompile Include="$(GeneratedFilesDir)module.g.cpp" />
- <ClCompile Include="logs.cpp" />
<ClCompile Include="ServoControl\OpenGLES.cpp" />
<ClCompile Include="ServoControl\Servo.cpp" />
<ClCompile Include="ServoControl\ServoControl.cpp" />
diff --git a/support/hololens/ServoApp/ServoApp.vcxproj.filters b/support/hololens/ServoApp/ServoApp.vcxproj.filters
index 39acc9fc3c3..399755d5d3f 100644
--- a/support/hololens/ServoApp/ServoApp.vcxproj.filters
+++ b/support/hololens/ServoApp/ServoApp.vcxproj.filters
@@ -10,7 +10,6 @@
<ItemGroup>
<ClCompile Include="pch.cpp" />
<ClCompile Include="$(GeneratedFilesDir)module.g.cpp" />
- <ClCompile Include="logs.cpp" />
<ClCompile Include="BrowserPage.cpp" />
<ClCompile Include="App.cpp" />
<ClCompile Include="ServoControl\OpenGLES.cpp">
@@ -25,7 +24,6 @@
</ItemGroup>
<ItemGroup>
<ClInclude Include="pch.h" />
- <ClInclude Include="logs.h" />
<ClInclude Include="BrowserPage.h" />
<ClInclude Include="App.h" />
<ClInclude Include="ServoControl\OpenGLES.h">
@@ -38,6 +36,7 @@
<Filter>ServoControl</Filter>
</ClInclude>
<ClInclude Include="DefaultUrl.h" />
+ <ClInclude Include="strutils.h" />
</ItemGroup>
<ItemGroup>
<Image Include="Assets\Wide310x150Logo.scale-200.png">
diff --git a/support/hololens/ServoApp/ServoControl/OpenGLES.cpp b/support/hololens/ServoApp/ServoControl/OpenGLES.cpp
index a89e5e373d4..5906bbfb5c7 100644
--- a/support/hololens/ServoApp/ServoControl/OpenGLES.cpp
+++ b/support/hololens/ServoApp/ServoControl/OpenGLES.cpp
@@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
#include "pch.h"
-#include "logs.h"
+#include "strutils.h"
#include "OpenGLES.h"
using namespace winrt::Windows::UI::Xaml::Controls;
@@ -13,7 +13,7 @@ using namespace winrt::Windows::Foundation::Collections;
OpenGLES::OpenGLES()
: mEglConfig(nullptr), mEglDisplay(EGL_NO_DISPLAY),
mEglContext(EGL_NO_CONTEXT) {
- log("OpenGLES::OpenGLES()");
+ log(L"OpenGLES::OpenGLES()");
Initialize();
}
diff --git a/support/hololens/ServoApp/ServoControl/Servo.cpp b/support/hololens/ServoApp/ServoControl/Servo.cpp
index a53ea2489f1..65205693aa6 100644
--- a/support/hololens/ServoApp/ServoControl/Servo.cpp
+++ b/support/hololens/ServoApp/ServoControl/Servo.cpp
@@ -178,7 +178,7 @@ Servo::Servo(hstring url, hstring args, GLsizei width, GLsizei height,
} else if (type == Windows::Foundation::PropertyType::Empty) {
pref.pref_type = capi::CPrefType::Missing;
} else {
- log("skipping pref %s. Unknown type", key);
+ log(L"skipping pref %s. Unknown type", key);
continue;
}
cprefs.push_back(pref);
diff --git a/support/hololens/ServoApp/ServoControl/Servo.h b/support/hololens/ServoApp/ServoControl/Servo.h
index 025b0f30c3f..7484c778f88 100644
--- a/support/hololens/ServoApp/ServoControl/Servo.h
+++ b/support/hololens/ServoApp/ServoControl/Servo.h
@@ -6,7 +6,7 @@
#include "pch.h"
#include <EGL/egl.h>
-#include "logs.h"
+#include "strutils.h"
#include <stdlib.h>
namespace winrt::servo {
diff --git a/support/hololens/ServoApp/ServoControl/ServoControl.cpp b/support/hololens/ServoApp/ServoControl/ServoControl.cpp
index cca58cce0ac..280e86778e0 100644
--- a/support/hololens/ServoApp/ServoControl/ServoControl.cpp
+++ b/support/hololens/ServoApp/ServoControl/ServoControl.cpp
@@ -1,4 +1,5 @@
#include "pch.h"
+#include "strutils.h"
#include "ServoControl.h"
#include "ServoControl.g.cpp"
#include "Pref.g.cpp"
@@ -277,16 +278,9 @@ hstring ServoControl::LoadURIOrSearch(hstring input) {
// Doesn't look like a URI. Let's search for the string.
auto escapedInput = Uri::EscapeComponent(input);
- std::wstring searchUri =
- unbox_value<hstring>(std::get<1>(Servo::GetPref(L"shell.searchpage")))
- .c_str();
- std::wstring keyword = L"%s";
- size_t start_pos = searchUri.find(keyword);
- if (start_pos == std::string::npos)
- searchUri = searchUri + escapedInput;
- else
- searchUri.replace(start_pos, keyword.length(), escapedInput);
- hstring finalUri{searchUri};
+ std::wstring searchUri = unbox_value<hstring>(std::get<1>(Servo::GetPref(L"shell.searchpage"))).c_str();
+ std::wstring formated = format(searchUri, escapedInput.c_str());
+ hstring finalUri{formated};
TryLoadUri(finalUri);
return finalUri;
}
@@ -323,10 +317,10 @@ void ServoControl::RunOnGLThread(std::function<void()> task) {
/**** GL THREAD LOOP ****/
void ServoControl::Loop() {
- log("BrowserPage::Loop(). GL thread: %i", GetCurrentThreadId());
+ log(L"BrowserPage::Loop(). GL thread: %i", GetCurrentThreadId());
if (mServo == nullptr) {
- log("Entering loop");
+ log(L"Entering loop");
ServoDelegate *sd = static_cast<ServoDelegate *>(this);
EGLNativeWindowType win = GetNativeWindow();
mServo = std::make_unique<Servo>(mInitialURL, mArgs, mPanelWidth,
@@ -367,7 +361,7 @@ void ServoControl::StartRenderLoop() {
#endif
}
mLooping = true;
- log("BrowserPage::StartRenderLoop(). UI thread: %i", GetCurrentThreadId());
+ log(L"BrowserPage::StartRenderLoop(). UI thread: %i", GetCurrentThreadId());
auto task = Concurrency::create_task([=] { Loop(); });
mLoopTask = std::make_unique<Concurrency::task<void>>(task);
}
diff --git a/support/hololens/ServoApp/logs.cpp b/support/hololens/ServoApp/logs.cpp
deleted file mode 100644
index 854684e6c20..00000000000
--- a/support/hololens/ServoApp/logs.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-#include "pch.h"
-
-void log(const char *format, ...) {
- char buf[4096], *p = buf;
- va_list args;
- int n;
-
- va_start(args, format);
- n = vsnprintf(p, sizeof buf - 3, format, args);
- va_end(args);
-
- p += (n < 0) ? sizeof buf - 3 : n;
-
- while (p > buf && isspace(p[-1])) {
- *--p = '\0';
- }
-
- *p++ = '\r';
- *p++ = '\n';
- *p = '\0';
-
- OutputDebugStringA(buf);
-} \ No newline at end of file
diff --git a/support/hololens/ServoApp/logs.h b/support/hololens/ServoApp/logs.h
deleted file mode 100644
index d71fd3e1233..00000000000
--- a/support/hololens/ServoApp/logs.h
+++ /dev/null
@@ -1,7 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-#pragma once
-
-void log(const char *format, ...); \ No newline at end of file
diff --git a/support/hololens/ServoApp/strutils.h b/support/hololens/ServoApp/strutils.h
new file mode 100644
index 00000000000..22198332c90
--- /dev/null
+++ b/support/hololens/ServoApp/strutils.h
@@ -0,0 +1,22 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+
+#pragma once
+
+template <typename... Args>
+std::wstring format(const std::wstring &txt, Args... args) {
+ size_t size = swprintf(nullptr, 0, txt.c_str(), args...) + 1;
+ if (size <= 0) {
+ throw std::runtime_error("Error during formatting.");
+ }
+ auto ptr = new wchar_t[size];
+ swprintf(ptr, size, txt.c_str(), args...);
+ auto wstr = std::wstring(ptr);
+ delete ptr;
+ return wstr;
+}
+
+template <typename... Args> void log(const std::wstring &txt, Args... args) {
+ OutputDebugString((format(txt, args...) + L"\r\n").c_str());
+}