Skip to content

Commit 589c704

Browse files
committed
Merge pull request #12 from OsirisNL/localfiles
Better local file handling on Windows
2 parents eaa33ba + 28d2800 commit 589c704

File tree

5 files changed

+15
-4
lines changed

5 files changed

+15
-4
lines changed

CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,20 @@ set(obs-browser_SOURCES
3131
shared/browser-source.cpp
3232
shared/base64.cpp
3333
obs-browser/browser-load-handler.cpp
34+
shared/browser-scheme.cpp
3435
)
3536

3637
set(obs-browser_HEADERS
3738
shared/browser-manager.hpp
3839
shared/browser-source.hpp
3940
shared/browser-listener.hpp
4041
shared/browser-settings.hpp
42+
shared/browser-types.h)
4143
shared/browser-types.h
4244
shared/base64.hpp
4345
obs-browser/browser-load-handler.hpp)
46+
shared/browser-scheme.hpp
47+
shared/browser-types.h)
4448

4549
if (APPLE)
4650
list(APPEND obs-browser_SOURCES

obs-browser/browser-manager-base.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include "browser-task.hpp"
55
#include "browser-app.hpp"
66
#include "browser-settings.hpp"
7+
#include "browser-scheme.hpp"
78
#include "browser-client.hpp"
89
#include "browser-render-handler.hpp"
910
#include "browser-load-handler.hpp"
@@ -350,7 +351,9 @@ void BrowserManager::Impl::BrowserManagerEntry()
350351
CefRefPtr<BrowserApp> app(new BrowserApp());
351352
CefExecuteProcess(mainArgs, app, nullptr);
352353
CefInitialize(mainArgs, settings, app, nullptr);
354+
CefRegisterSchemeHandlerFactory("http", "absolute", new BrowserSchemeHandlerFactory());
353355
CefRunMessageLoop();
356+
CefShutdown();
354357
});
355358

356359
while (true) {

obs-browser/main-source.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ static uint32_t browser_source_get_height(void *data)
103103
}
104104

105105

106-
static const char *browser_source_get_name(void)
106+
static const char *browser_source_get_name(void *)
107107
{
108108
return obs_module_text("BrowserSource");
109109
}

shared/browser-scheme.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,16 @@ bool BrowserSchemeHandler::ProcessRequest(CefRefPtr<CefRequest> request,
3131
CefRefPtr<CefCallback> callback)
3232
{
3333
CefURLParts parts;
34+
CefString fileName;
3435
CefParseURL(request->GetURL(), parts);
3536

3637
std::string path = CefString(&parts.path);
37-
fileName = path.substr(path.find_last_of("/") + 1);
38-
38+
path = CefURIDecode(path,true,cef_uri_unescape_rule_t::UU_SPACES);
39+
#ifdef WIN32
40+
inputStream.open(path.erase(0,1), std::ifstream::binary);
41+
#else
3942
inputStream.open(path, std::ifstream::binary);
43+
#endif
4044
if (!inputStream.is_open()) {
4145
callback->Cancel();
4246
return false;

shared/browser-source.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ void BrowserSource::UpdateBrowser()
4646

4747
BrowserSettings browserSettings;
4848

49-
browserSettings.url = isLocalFile? "http://absolute"+ url : url,
49+
browserSettings.url = isLocalFile? "http://absolute/"+ url : url,
5050
browserSettings.width = width;
5151
browserSettings.height = height;
5252
browserSettings.fps = fps;

0 commit comments

Comments
 (0)