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

Side by Side Diff: media/tools/shader_bench/window_linux.cc

Issue 4873002: Benchmark tool for GPU-accelerated video rendering (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed media.gyp Created 10 years 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
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 "media/tools/shader_bench/window.h"
6
7 #include "base/task.h"
8 #include "media/tools/shader_bench/painter.h"
9
10 #include <gdk/gdkx.h>
11 #include <gtk/gtk.h>
12
13 namespace {
14
15 gboolean OnDelete(GtkWidget* widget, GdkEventExpose* event) {
16 gtk_main_quit();
17 return FALSE;
18 }
19
20 gboolean OnExpose(GtkWidget* widget, GdkEventExpose* event, gpointer data) {
21 media::Window* window = reinterpret_cast<media::Window*>(data);
22 if (window) window->OnPaint();
scherkus (not reviewing) 2010/11/30 23:36:10 nit: one-liners
vrk (LEFT CHROMIUM) 2010/12/01 02:46:11 Done.
23 return FALSE;
24 }
25
26 } // namespace
27
28 namespace media {
29
30 gfx::NativeWindow Window::CreateNativeWindow(int width, int height) {
31 GtkWidget* hwnd = gtk_window_new(GTK_WINDOW_TOPLEVEL);
32
33 gtk_window_set_default_size(GTK_WINDOW(hwnd), width, height);
34 gtk_widget_set_double_buffered(hwnd, FALSE);
35 gtk_widget_set_app_paintable(hwnd, TRUE);
36 gtk_widget_show(hwnd);
37
38 return GTK_WINDOW(hwnd);
39 }
40
41 gfx::PluginWindowHandle Window::PluginWindow() {
42 return GDK_WINDOW_XWINDOW(GTK_WIDGET(window_handle_)->window);
43 }
44
45 void Window::Start(int limit, Task* done_task, Painter* painter) {
46 running_ = true;
47 count_ = 0;
48 limit_ = limit;
49 done_task_ = done_task;
50 painter_ = painter;
51
52 gtk_signal_connect(GTK_OBJECT(window_handle_),
53 "delete_event",
54 reinterpret_cast<GtkSignalFunc>(::OnDelete),
55 NULL);
56
57 gtk_signal_connect(GTK_OBJECT(window_handle_),
58 "expose_event",
59 reinterpret_cast<GtkSignalFunc>(::OnExpose),
60 this);
61
62 gtk_widget_queue_draw(GTK_WIDGET(window_handle_));
63 MainLoop();
64 }
65
66 void Window::OnPaint() {
67 if (!running_)
68 return;
69
70 if (count_ < limit_) {
71 painter_->OnPaint();
72 count_++;
73 gtk_widget_queue_draw(GTK_WIDGET(window_handle_));
74 } else {
75 running_ = false;
76 if (done_task_) {
77 done_task_->Run();
78 delete done_task_;
79 }
80 gtk_main_quit();
81 }
82 }
83
84 void Window::MainLoop() {
85 gtk_main();
86 }
87
88 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698