| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #include <SDL/include/SDL.h>
- #include <ThirdParty/SDL/include/SDL_syswm.h>
- #include <include/cef_app.h>
- #include <include/cef_client.h>
- #include <include/wrapper/cef_helpers.h>
- #include <include/base/cef_bind.h>
- #include <include/wrapper/cef_closure_task.h>
- #include <Atomic/Core/ProcessUtils.h>
- #include <Atomic/Core/CoreEvents.h>
- #include <Atomic/IO/Log.h>
- #include <Atomic/Graphics/Graphics.h>
- #include "Internal/WebAppBrowser.h"
- #include "WebSchemeHandler.h"
- #include "WebClient.h"
- #include "WebBrowserHost.h"
- namespace Atomic
- {
- class WebBrowserHostPrivate
- {
- friend class WebBrowserHost;
- public:
- WebBrowserHostPrivate(WebBrowserHost* host)
- {
- host_ = host;
- app_ = new WebAppBrowser();
- }
- virtual ~WebBrowserHostPrivate()
- {
- host_ = 0;
- }
- private:
- WeakPtr<WebBrowserHost> host_;
- CefRefPtr<CefApp> app_;
- };
- WebBrowserHost::WebBrowserHost(Context* context) : Object (context)
- {
- const Vector<String>& arguments = GetArguments();
- // IMPORTANT: Cef::App contains virtual void OnBeforeCommandLineProcessing(), which should make it possible
- // to setup args on Windows
- #ifdef ATOMIC_PLATFORM_OSX
- const char* _argv[3] = { "", "--enable-media-stream", "--enable-usermedia-screen-capturing" };
- CefMainArgs args(3, (char**) &_argv);
- #else
- CefMainArgs args;
- #endif
- CefSettings settings;
- settings.windowless_rendering_enabled = true;
- d_ = new WebBrowserHostPrivate(this);
- // If losing OSX system menu, it means we're calling this
- // before initializing graphics subsystem
- if (!CefInitialize(args, settings, d_->app_, nullptr))
- {
- LOGERROR("CefInitialize - Error");
- }
- RegisterWebSchemeHandlers(this);
- SubscribeToEvent(E_BEGINFRAME, HANDLER(WebBrowserHost, HandleBeginFrame));
- }
- WebBrowserHost::~WebBrowserHost()
- {
- CefClearSchemeHandlerFactories();
- CefShutdown();
- }
- void WebBrowserHost::HandleBeginFrame(StringHash eventType, VariantMap& eventData)
- {
- CefDoMessageLoopWork();
- }
- }
|