| Index: content/browser/gamepad/gamepad_provider.h
|
| diff --git a/content/browser/gamepad/gamepad_provider.h b/content/browser/gamepad/gamepad_provider.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a97c35242409f2bce35607a397fc28c59826e355
|
| --- /dev/null
|
| +++ b/content/browser/gamepad/gamepad_provider.h
|
| @@ -0,0 +1,78 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef CONTENT_BROWSER_GAMEPAD_PROVIDER_H_
|
| +#define CONTENT_BROWSER_GAMEPAD_PROVIDER_H_
|
| +
|
| +#include "base/memory/scoped_ptr.h"
|
| +#include "base/memory/weak_ptr.h"
|
| +#include "base/message_loop_proxy.h"
|
| +#include "base/shared_memory.h"
|
| +#include "base/system_monitor/system_monitor.h"
|
| +#include "base/task.h"
|
| +#include "content/browser/gamepad/data_fetcher.h"
|
| +#include "content/common/content_export.h"
|
| +#include "content/common/gamepad_hardware_buffer.h"
|
| +
|
| +namespace base {
|
| +class Thread;
|
| +}
|
| +
|
| +struct GamepadMsg_Updated_Params;
|
| +
|
| +namespace gamepad {
|
| +
|
| +class CONTENT_EXPORT Provider :
|
| + public base::RefCountedThreadSafe<Provider>,
|
| + public base::SystemMonitor::DevicesChangedObserver {
|
| + public:
|
| + explicit Provider(DataFetcher* fetcher);
|
| +
|
| + // Starts or Stops the provider. Called from creator_loop_.
|
| + void Start();
|
| + void Stop();
|
| + base::SharedMemoryHandle GetRendererSharedMemoryHandle(
|
| + base::ProcessHandle renderer_process);
|
| +
|
| + private:
|
| + friend class base::RefCountedThreadSafe<Provider>;
|
| +
|
| + virtual ~Provider();
|
| +
|
| + // Method for starting the polling, runs on polling_thread_.
|
| + void DoInitializePollingThread();
|
| +
|
| + // Method for polling a DataFetcher. Runs on the polling_thread_.
|
| + void DoPoll();
|
| + void ScheduleDoPoll();
|
| +
|
| + virtual void OnDevicesChanged() OVERRIDE;
|
| +
|
| + GamepadHardwareBuffer* SharedMemoryAsHardwareBuffer();
|
| +
|
| + enum { kDesiredSamplingIntervalMs = 16 };
|
| +
|
| + // The Message Loop on which this object was created.
|
| + // Typically the I/O loop, but may be something else during testing.
|
| + scoped_refptr<base::MessageLoopProxy> creator_loop_;
|
| + scoped_ptr<DataFetcher> provided_fetcher_;
|
| +
|
| + // When polling_thread_ is running, members below are only to be used
|
| + // from that thread.
|
| + scoped_ptr<DataFetcher> data_fetcher_;
|
| + base::SharedMemory gamepad_shared_memory_;
|
| + bool devices_changed_;
|
| +
|
| + // Polling is done on this background thread.
|
| + scoped_ptr<base::Thread> polling_thread_;
|
| +
|
| + static Provider* instance_;
|
| + base::WeakPtrFactory<Provider> weak_factory_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(Provider);
|
| +};
|
| +
|
| +} // namespace gamepad
|
| +
|
| +#endif // CONTENT_BROWSER_GAMEPAD_PROVIDER_H_
|
|
|