|
- // Copyright (c) 2011 The Native Client Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
-
- #pragma once
-
- #include <ppapi/cpp/instance.h>
- #include <ppapi/c/ppb_gamepad.h>
- #include <ppapi/cpp/input_event.h>
-
- #include "platform/nacl/opengl_context.h"
- #include "platform/nacl/opengl_context_ptrs.h"
-
- #include "input/input.h"
- #include "input/input_internal.h"
-
- namespace lol {
-
- class NaClInputData
- {
- friend class NaClInstance;
-
- private:
- void Tick(float seconds);
- bool IsViewportSizeValid() { return (m_app.x > 0.f && m_app.y > 0.f && m_screen.x > 0.f && m_screen.y > 0.f); }
- void InitViewportSize();
-
- static void SetMousePos(ivec2 position);
-
- NaClInputData()
- : m_mousecapture(false)
- {
- InitViewportSize();
- }
-
- array<class pp::InputEvent> m_input_events;
- class InputDeviceInternal* m_mouse;
- class InputDeviceInternal* m_keyboard;
-
- vec2 m_app;
- vec2 m_screen;
- bool m_mousecapture;
- };
-
- class NaClInstance : public pp::Instance
- {
- public:
- explicit NaClInstance(PP_Instance instance);
-
- // The dtor makes the 3D context current before deleting the cube view, then
- // destroys the 3D context both in the module and in the browser.
- virtual ~NaClInstance();
-
- // Called by the browser when the NaCl module is loaded and all ready to go.
- virtual bool Init(uint32_t argc, const char* argn[], const char* argv[]);
-
- // Called whenever the in-browser window changes size.
- virtual void DidChangeView(const pp::Rect& position, const pp::Rect& clip);
-
- // Called by the browser to handle the postMessage() call in Javascript.
- virtual void HandleMessage(const pp::Var& message);
-
- // Bind and publish the module's methods to JavaScript.
- //void InitializeMethods(ScriptingBridge* bridge);
-
- // Called to draw the contents of the module's browser area.
- virtual bool HandleInputEvent(const pp::InputEvent& event);
-
- void DrawSelf();
-
- /* Communication with the application object */
- static void MainSignal();
-
- private:
- SharedOpenGLContext m_opengl_ctx;
-
- ivec2 m_size;
-
- static void TickCallback(void* data, int32_t result);
- static void * MainRun(void *data);
-
- /* Gamepad support */
- PPB_Gamepad const *m_pad_interface;
-
- //12/09/2013 : Should use new system.
- NaClInputData *m_input_data;
-
- /* Communication with the application object */
- struct Args
- {
- Args(int argc, char **argv, char **env)
- : m_argc(argc), m_argv(argv), m_env(env) {}
- Args() {}
-
- int m_argc;
- char **m_argv;
- char **m_env;
- };
- static mutex main_mutex;
- static queue<Args *, 1> main_queue;
-
- Thread *m_main_thread;
- };
-
- } // namespace lol
|