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

Unified Diff: base/clipboard_win.cc

Issue 11398: Lazily create the clipboard owner window. CreateWindow can take ~.5ms, and w... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« base/clipboard.h ('K') | « base/clipboard.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/clipboard_win.cc
===================================================================
--- base/clipboard_win.cc (revision 5863)
+++ base/clipboard_win.cc (working copy)
@@ -131,15 +131,12 @@
wcex.lpszClassName = L"ClipboardOwnerWindowClass";
::RegisterClassEx(&wcex);
- clipboard_owner_ = ::CreateWindow(L"ClipboardOwnerWindowClass",
- L"ClipboardOwnerWindow",
- 0, 0, 0, 0, 0,
- HWND_MESSAGE,
- 0, 0, 0);
+ clipboard_owner_ = NULL;
}
Clipboard::~Clipboard() {
- ::DestroyWindow(clipboard_owner_);
+ if (clipboard_owner_)
+ ::DestroyWindow(clipboard_owner_);
clipboard_owner_ = NULL;
}
@@ -150,7 +147,7 @@
void Clipboard::WriteObjects(const ObjectMap& objects,
base::ProcessHandle process) {
ScopedClipboard clipboard;
- if (!clipboard.Acquire(clipboard_owner_))
+ if (!clipboard.Acquire(GetClipboardWindow()))
return;
::EmptyClipboard();
@@ -385,7 +382,7 @@
// Acquire the clipboard.
ScopedClipboard clipboard;
- if (!clipboard.Acquire(clipboard_owner_))
+ if (!clipboard.Acquire(GetClipboardWindow()))
return;
HANDLE data = ::GetClipboardData(CF_UNICODETEXT);
@@ -406,7 +403,7 @@
// Acquire the clipboard.
ScopedClipboard clipboard;
- if (!clipboard.Acquire(clipboard_owner_))
+ if (!clipboard.Acquire(GetClipboardWindow()))
return;
HANDLE data = ::GetClipboardData(CF_TEXT);
@@ -426,7 +423,7 @@
// Acquire the clipboard.
ScopedClipboard clipboard;
- if (!clipboard.Acquire(clipboard_owner_))
+ if (!clipboard.Acquire(GetClipboardWindow()))
return;
HANDLE data = ::GetClipboardData(GetHtmlFormatType());
@@ -450,7 +447,7 @@
// Acquire the clipboard.
ScopedClipboard clipboard;
- if (!clipboard.Acquire(clipboard_owner_))
+ if (!clipboard.Acquire(GetClipboardWindow()))
return;
HANDLE data = ::GetClipboardData(GetUrlWFormatType());
@@ -489,7 +486,7 @@
files->clear();
ScopedClipboard clipboard;
- if (!clipboard.Acquire(clipboard_owner_))
+ if (!clipboard.Acquire(GetClipboardWindow()))
return;
HDROP drop = static_cast<HDROP>(::GetClipboardData(CF_HDROP));
@@ -605,3 +602,14 @@
else
::GlobalFree(data);
}
+
+HWND Clipboard::GetClipboardWindow() const {
+ if (!clipboard_owner_) {
+ clipboard_owner_ = ::CreateWindow(L"ClipboardOwnerWindowClass",
+ L"ClipboardOwnerWindow",
+ 0, 0, 0, 0, 0,
+ HWND_MESSAGE,
+ 0, 0, 0);
+ }
+ return clipboard_owner_;
+}
« base/clipboard.h ('K') | « base/clipboard.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698