mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Create 2272 release branch for CEF3.
git-svn-id: https://chromiumembedded.googlecode.com/svn/branches/2272@1993 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
60
tests/cefclient/main_message_loop_multithreaded_win.h
Normal file
60
tests/cefclient/main_message_loop_multithreaded_win.h
Normal file
@ -0,0 +1,60 @@
|
||||
// Copyright (c) 2015 The Chromium Embedded Framework 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 CEF_TESTS_CEFCLIENT_MAIN_MESSAGE_LOOP_MULTITHREADED_WIN_H_
|
||||
#define CEF_TESTS_CEFCLIENT_MAIN_MESSAGE_LOOP_MULTITHREADED_WIN_H_
|
||||
|
||||
#include <windows.h>
|
||||
#include <queue>
|
||||
|
||||
#include "include/base/cef_lock.h"
|
||||
#include "include/base/cef_platform_thread.h"
|
||||
#include "cefclient/main_message_loop.h"
|
||||
|
||||
namespace client {
|
||||
|
||||
// Represents the main message loop in the browser process when using multi-
|
||||
// threaded message loop mode on Windows. In this mode there is no Chromium
|
||||
// message loop running on the main application thread. Instead, this
|
||||
// implementation utilizes a hidden message window for running tasks.
|
||||
class MainMessageLoopMultithreadedWin : public MainMessageLoop {
|
||||
public:
|
||||
MainMessageLoopMultithreadedWin();
|
||||
~MainMessageLoopMultithreadedWin();
|
||||
|
||||
// MainMessageLoop methods.
|
||||
int Run() OVERRIDE;
|
||||
void Quit() OVERRIDE;
|
||||
void PostTask(CefRefPtr<CefTask> task) OVERRIDE;
|
||||
bool RunsTasksOnCurrentThread() const OVERRIDE;
|
||||
void SetCurrentModelessDialog(HWND hWndDialog) OVERRIDE;
|
||||
|
||||
private:
|
||||
// Create the message window.
|
||||
static HWND CreateMessageWindow(HINSTANCE hInstance);
|
||||
|
||||
// Window procedure for the message window.
|
||||
static LRESULT CALLBACK MessageWndProc(HWND hWnd, UINT message, WPARAM wParam,
|
||||
LPARAM lParam);
|
||||
|
||||
void PostTaskInternal(CefRefPtr<CefTask> task);
|
||||
|
||||
base::PlatformThreadId thread_id_;
|
||||
UINT task_message_id_;
|
||||
|
||||
// Only accessed on the main thread.
|
||||
HWND dialog_hwnd_;
|
||||
|
||||
base::Lock lock_;
|
||||
|
||||
// Must be protected by |lock_|.
|
||||
HWND message_hwnd_;
|
||||
std::queue<CefRefPtr<CefTask> > queued_tasks_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(MainMessageLoopMultithreadedWin);
|
||||
};
|
||||
|
||||
} // namespace client
|
||||
|
||||
#endif // CEF_TESTS_CEFCLIENT_MAIN_MESSAGE_LOOP_MULTITHREADED_WIN_H_
|
Reference in New Issue
Block a user