Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(991)

Side by Side Diff: chrome/plugin/command_buffer_stub_win.cc

Issue 6588090: Removed GPU plugin.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/plugin/command_buffer_stub.cc ('k') | chrome/plugin/plugin_main.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2010 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 #include <windows.h>
6
7 #include "chrome/plugin/command_buffer_stub.h"
8
9 namespace {
10 const wchar_t* kPreviousWndProcProperty = L"CommandBufferStubPrevWndProc";
11 const wchar_t* kCommandBufferStubProperty = L"CommandBufferStub";
12
13 // Message handler for the GPU plugin's child window. Used to intercept
14 // WM_PAINT events and forward repaint notifications to the client.
15 LRESULT WINAPI WndProc(HWND handle,
16 UINT message,
17 WPARAM w_param,
18 LPARAM l_param) {
19 WNDPROC previous_wnd_proc = reinterpret_cast<WNDPROC>(
20 ::GetProp(handle, kPreviousWndProcProperty));
21 CommandBufferStub* stub = reinterpret_cast<CommandBufferStub*>(
22 ::GetProp(handle, kCommandBufferStubProperty));
23
24 switch (message) {
25 case WM_ERASEBKGND:
26 // Do not clear background. Avoids flickering.
27 return 1;
28 case WM_PAINT:
29 // Validate the whole window to prevent another WM_PAINT message.
30 ValidateRect(handle, NULL);
31
32 // Notify client that the window is invalid and needs to be repainted.
33 stub->NotifyRepaint();
34
35 return 1;
36 default:
37 return CallWindowProc(previous_wnd_proc,
38 handle,
39 message,
40 w_param,
41 l_param);
42 }
43 }
44 } // namespace anonymous
45
46 bool CommandBufferStub::InitializePlatformSpecific() {
47 // Subclass window.
48 WNDPROC previous_wnd_proc = reinterpret_cast<WNDPROC>(
49 ::GetWindowLongPtr(window_, GWLP_WNDPROC));
50 ::SetProp(window_,
51 kPreviousWndProcProperty,
52 reinterpret_cast<HANDLE>(previous_wnd_proc));
53 ::SetWindowLongPtr(window_,
54 GWLP_WNDPROC,
55 reinterpret_cast<LONG_PTR>(WndProc));
56
57 // Record pointer to this in window.
58 ::SetProp(window_,
59 kCommandBufferStubProperty,
60 reinterpret_cast<HANDLE>(this));
61
62 return true;
63 }
64
65 void CommandBufferStub::DestroyPlatformSpecific() {
66 // Restore window.
67 WNDPROC previous_wnd_proc = reinterpret_cast<WNDPROC>(
68 ::GetProp(window_, kPreviousWndProcProperty));
69 ::SetWindowLongPtr(window_, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(
70 previous_wnd_proc));
71 ::RemoveProp(window_, kPreviousWndProcProperty);
72 ::RemoveProp(window_, kCommandBufferStubProperty);
73 }
OLDNEW
« no previous file with comments | « chrome/plugin/command_buffer_stub.cc ('k') | chrome/plugin/plugin_main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698