| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef GPU_GPU_PLUGIN_GPU_PLUGIN_OBJECT_H_ | |
| 6 #define GPU_GPU_PLUGIN_GPU_PLUGIN_OBJECT_H_ | |
| 7 | |
| 8 #include <string> | |
| 9 | |
| 10 #include "base/ref_counted.h" | |
| 11 #include "base/thread.h" | |
| 12 #include "gpu/command_buffer/common/command_buffer.h" | |
| 13 #include "gpu/command_buffer/service/gpu_processor.h" | |
| 14 #include "gpu/np_utils/default_np_object.h" | |
| 15 #include "gpu/np_utils/np_dispatcher.h" | |
| 16 #include "gpu/np_utils/np_headers.h" | |
| 17 #include "gpu/np_utils/np_plugin_object.h" | |
| 18 #include "gpu/np_utils/np_utils.h" | |
| 19 | |
| 20 namespace gpu_plugin { | |
| 21 | |
| 22 // The scriptable object for the GPU plugin. | |
| 23 class GPUPluginObject : public np_utils::DefaultNPObject<NPObject>, | |
| 24 public np_utils::PluginObject { | |
| 25 public: | |
| 26 static const int32 kCommandBufferSize = 1024 * 1024; | |
| 27 | |
| 28 enum Status { | |
| 29 // In the state of waiting for the named function to be called to continue | |
| 30 // the initialization sequence. | |
| 31 kWaitingForNew, | |
| 32 kWaitingForSetWindow, | |
| 33 kWaitingForOpenCommandBuffer, | |
| 34 | |
| 35 // Initialization either succeeded or failed. | |
| 36 kInitializationSuccessful, | |
| 37 kInitializationFailed, | |
| 38 | |
| 39 // Destroy has now been called and the plugin object cannot be used. | |
| 40 kDestroyed, | |
| 41 }; | |
| 42 | |
| 43 static const NPUTF8 kPluginType[]; | |
| 44 | |
| 45 explicit GPUPluginObject(NPP npp); | |
| 46 | |
| 47 virtual NPError New(NPMIMEType plugin_type, | |
| 48 int16 argc, | |
| 49 char* argn[], | |
| 50 char* argv[], | |
| 51 NPSavedData* saved); | |
| 52 | |
| 53 virtual NPError SetWindow(NPWindow* new_window); | |
| 54 const NPWindow& GetWindow() { return window_; } | |
| 55 | |
| 56 virtual int16 HandleEvent(NPEvent* event); | |
| 57 | |
| 58 virtual NPError Destroy(NPSavedData** saved); | |
| 59 | |
| 60 virtual void Release(); | |
| 61 | |
| 62 virtual NPObject* GetScriptableNPObject(); | |
| 63 | |
| 64 // Returns the current initialization status. See Status enum. | |
| 65 int32 GetStatus() { | |
| 66 return status_; | |
| 67 } | |
| 68 | |
| 69 // Get the width of the plugin window. | |
| 70 int32 GetWidth() { | |
| 71 return window_.width; | |
| 72 } | |
| 73 | |
| 74 // Get the height of the plugin window. | |
| 75 int32 GetHeight() { | |
| 76 return window_.height; | |
| 77 } | |
| 78 | |
| 79 // Set the object that receives notifications of GPU plugin object events | |
| 80 // such as resize and keyboard and mouse input. | |
| 81 void SetEventSync(np_utils::NPObjectPointer<NPObject> event_sync) { | |
| 82 event_sync_ = event_sync; | |
| 83 } | |
| 84 | |
| 85 np_utils::NPObjectPointer<NPObject> GetEventSync() { | |
| 86 return event_sync_; | |
| 87 } | |
| 88 | |
| 89 // Initializes and returns the command buffer object. Returns NULL if the | |
| 90 // command buffer cannot be initialized, for example if the plugin does not | |
| 91 // yet have a window handle. | |
| 92 command_buffer::CommandBuffer* OpenCommandBuffer(); | |
| 93 | |
| 94 // Set the status for testing. | |
| 95 void set_status(Status status) { | |
| 96 status_ = status; | |
| 97 } | |
| 98 | |
| 99 // Replace the default command buffer for testing. Takes ownership. | |
| 100 void set_command_buffer(command_buffer::CommandBuffer* | |
| 101 command_buffer) { | |
| 102 command_buffer_.reset(command_buffer); | |
| 103 } | |
| 104 | |
| 105 // Replace the default GPU processor for testing. | |
| 106 void set_gpu_processor( | |
| 107 const scoped_refptr<command_buffer::GPUProcessor>& processor) { | |
| 108 processor_ = processor; | |
| 109 } | |
| 110 | |
| 111 NP_UTILS_BEGIN_DISPATCHER_CHAIN(GPUPluginObject, DefaultNPObject<NPObject>) | |
| 112 NP_UTILS_DISPATCHER(GetStatus, int32()) | |
| 113 NP_UTILS_DISPATCHER(GetWidth, int32()) | |
| 114 NP_UTILS_DISPATCHER(GetHeight, int32()) | |
| 115 NP_UTILS_DISPATCHER(SetEventSync, | |
| 116 void(np_utils::NPObjectPointer<NPObject> sync)) | |
| 117 NP_UTILS_DISPATCHER(GetEventSync, np_utils::NPObjectPointer<NPObject>()) | |
| 118 NP_UTILS_END_DISPATCHER_CHAIN | |
| 119 | |
| 120 private: | |
| 121 NPError PlatformSpecificSetWindow(NPWindow* new_window); | |
| 122 | |
| 123 NPP npp_; | |
| 124 Status status_; | |
| 125 NPWindow window_; | |
| 126 scoped_ptr<command_buffer::CommandBuffer> command_buffer_; | |
| 127 scoped_refptr<command_buffer::GPUProcessor> processor_; | |
| 128 np_utils::NPObjectPointer<NPObject> event_sync_; | |
| 129 }; | |
| 130 | |
| 131 } // namespace gpu_plugin | |
| 132 | |
| 133 #endif // GPU_GPU_PLUGIN_GPU_PLUGIN_OBJECT_H_ | |
| OLD | NEW |