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

Side by Side Diff: compositor/real_compositor.h

Issue 6793005: Add the xrender backend to the window manager. (Closed) Base URL: ssh://gitrw.chromium.org:9222/window_manager.git@master
Patch Set: Address fourth round of comments. Created 9 years, 8 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 | « compositor/gles/opengles_visitor.cc ('k') | compositor/real_compositor.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef WINDOW_MANAGER_COMPOSITOR_REAL_COMPOSITOR_H_ 5 #ifndef WINDOW_MANAGER_COMPOSITOR_REAL_COMPOSITOR_H_
6 #define WINDOW_MANAGER_COMPOSITOR_REAL_COMPOSITOR_H_ 6 #define WINDOW_MANAGER_COMPOSITOR_REAL_COMPOSITOR_H_
7 7
8 #include <list> 8 #include <list>
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
11 #include <string> 11 #include <string>
12 #include <tr1/memory> 12 #include <tr1/memory>
13 #include <tr1/unordered_set> 13 #include <tr1/unordered_set>
14 #include <vector> 14 #include <vector>
15 15
16 #include <gtest/gtest_prod.h> // for FRIEND_TEST() macro 16 #include <gtest/gtest_prod.h> // for FRIEND_TEST() macro
17 17
18 #include "base/hash_tables.h" 18 #include "base/hash_tables.h"
19 #include "base/logging.h" 19 #include "base/logging.h"
20 #include "base/scoped_ptr.h" 20 #include "base/scoped_ptr.h"
21 #include "base/time.h" 21 #include "base/time.h"
22 #include "window_manager/compositor/animation.h" 22 #include "window_manager/compositor/animation.h"
23 #include "window_manager/compositor/compositor.h" 23 #include "window_manager/compositor/compositor.h"
24 #include "window_manager/math_types.h" 24 #include "window_manager/math_types.h"
25 #include "window_manager/x11/x_types.h" 25 #include "window_manager/x11/x_types.h"
26 26
27 #if !(defined(COMPOSITOR_OPENGL) || defined(COMPOSITOR_OPENGLES)) 27 #if !(defined(COMPOSITOR_OPENGL) || \
28 #error COMPOSITOR_OPENGL or COMPOSITOR_OPENGLES must be defined 28 defined(COMPOSITOR_OPENGLES) || \
29 defined(COMPOSITOR_XRENDER))
30 #error COMPOSITOR_OPENGL, COMPOSITOR_OPENGLES or\
31 COMPOSITOR_XRENDER must be defined
29 #endif 32 #endif
30 33
31 namespace window_manager { 34 namespace window_manager {
32 35
33 class EventLoop; 36 class EventLoop;
34 class Gles2Interface; 37 class Gles2Interface;
35 class GLInterface; 38 class GLInterface;
36 class OpenGlDrawVisitor; 39 class OpenGlDrawVisitor;
37 class OpenGlesDrawVisitor; 40 class OpenGlesDrawVisitor;
38 class TextureData; 41 class TextureData;
39 class XConnection; 42 class XConnection;
43 class XRenderDrawVisitor;
40 44
41 class RealCompositor : public Compositor { 45 class RealCompositor : public Compositor {
42 public: 46 public:
43 class Actor; 47 class Actor;
44 class ColoredBoxActor; 48 class ColoredBoxActor;
45 class ContainerActor; 49 class ContainerActor;
46 class ImageActor; 50 class ImageActor;
47 class QuadActor; 51 class QuadActor;
48 class StageActor; 52 class StageActor;
49 class TexturePixmapActor; 53 class TexturePixmapActor;
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
584 588
585 // Has the stage been resized? This gets set by SetSizeImpl() and 589 // Has the stage been resized? This gets set by SetSizeImpl() and
586 // then checked and reset by the visitor after it resizes the viewport. 590 // then checked and reset by the visitor after it resizes the viewport.
587 bool was_resized_; 591 bool was_resized_;
588 592
589 Compositor::Color stage_color_; 593 Compositor::Color stage_color_;
590 DISALLOW_COPY_AND_ASSIGN(StageActor); 594 DISALLOW_COPY_AND_ASSIGN(StageActor);
591 }; 595 };
592 596
593 RealCompositor(EventLoop* event_loop, 597 RealCompositor(EventLoop* event_loop,
594 XConnection* x_conn, 598 XConnection* x_conn
595 #if defined(COMPOSITOR_OPENGL) 599 #if defined(COMPOSITOR_OPENGL)
596 GLInterface* gl_interface 600 ,GLInterface* gl_interface
597 #elif defined(COMPOSITOR_OPENGLES) 601 #elif defined(COMPOSITOR_OPENGLES)
598 Gles2Interface* gl_interface 602 ,Gles2Interface* gl_interface
599 #endif 603 #endif
600 ); 604 );
601 ~RealCompositor(); 605 ~RealCompositor();
602 606
603 // Begin Compositor methods. 607 // Begin Compositor methods.
604 virtual void RegisterCompositionChangeListener( 608 virtual void RegisterCompositionChangeListener(
605 CompositionChangeListener* listener); 609 CompositionChangeListener* listener);
606 virtual void UnregisterCompositionChangeListener( 610 virtual void UnregisterCompositionChangeListener(
607 CompositionChangeListener* listener); 611 CompositionChangeListener* listener);
608 virtual bool TexturePixmapActorUsesFastPath() { 612 virtual bool TexturePixmapActorUsesFastPath() {
(...skipping 15 matching lines...) Expand all
624 virtual void Draw(); 628 virtual void Draw();
625 // End Compositor methods 629 // End Compositor methods
626 630
627 XConnection* x_conn() { return x_conn_; } 631 XConnection* x_conn() { return x_conn_; }
628 // TODO: These are just here so that ImageActor::SetImageData() can 632 // TODO: These are just here so that ImageActor::SetImageData() can
629 // update its texture. Find a better way to expose this. 633 // update its texture. Find a better way to expose this.
630 #if defined(COMPOSITOR_OPENGL) 634 #if defined(COMPOSITOR_OPENGL)
631 OpenGlDrawVisitor* draw_visitor() { return draw_visitor_.get(); } 635 OpenGlDrawVisitor* draw_visitor() { return draw_visitor_.get(); }
632 #elif defined(COMPOSITOR_OPENGLES) 636 #elif defined(COMPOSITOR_OPENGLES)
633 OpenGlesDrawVisitor* draw_visitor() { return draw_visitor_.get(); } 637 OpenGlesDrawVisitor* draw_visitor() { return draw_visitor_.get(); }
638 #elif defined(COMPOSITOR_XRENDER)
639 XRenderDrawVisitor* draw_visitor() { return draw_visitor_.get(); }
634 #endif 640 #endif
635 int actor_count() { return actor_count_; } 641 int actor_count() { return actor_count_; }
636 bool dirty() const { return dirty_; } 642 bool dirty() const { return dirty_; }
637 bool using_visibility_groups() const { 643 bool using_visibility_groups() const {
638 return !active_visibility_groups_.empty(); 644 return !active_visibility_groups_.empty();
639 } 645 }
640 const std::tr1::unordered_set<int>& active_visibility_groups() const { 646 const std::tr1::unordered_set<int>& active_visibility_groups() const {
641 return active_visibility_groups_; 647 return active_visibility_groups_;
642 } 648 }
643 649
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 702
697 // This is the count of actors in the tree as of the last time 703 // This is the count of actors in the tree as of the last time
698 // Update was called. It is used to compute the depth delta for 704 // Update was called. It is used to compute the depth delta for
699 // layer depth calculations. 705 // layer depth calculations.
700 int32 actor_count_; 706 int32 actor_count_;
701 707
702 #if defined(COMPOSITOR_OPENGL) 708 #if defined(COMPOSITOR_OPENGL)
703 scoped_ptr<OpenGlDrawVisitor> draw_visitor_; 709 scoped_ptr<OpenGlDrawVisitor> draw_visitor_;
704 #elif defined(COMPOSITOR_OPENGLES) 710 #elif defined(COMPOSITOR_OPENGLES)
705 scoped_ptr<OpenGlesDrawVisitor> draw_visitor_; 711 scoped_ptr<OpenGlesDrawVisitor> draw_visitor_;
712 #elif defined(COMPOSITOR_XRENDER)
713 scoped_ptr<XRenderDrawVisitor> draw_visitor_;
706 #endif 714 #endif
707 715
708 // Time that we last drew the scene. 716 // Time that we last drew the scene.
709 base::TimeTicks last_draw_time_; 717 base::TimeTicks last_draw_time_;
710 718
711 // ID of the event loop timeout used to invoke Draw(). 719 // ID of the event loop timeout used to invoke Draw().
712 int draw_timeout_id_; 720 int draw_timeout_id_;
713 721
714 // Is the drawing timeout currently enabled? 722 // Is the drawing timeout currently enabled?
715 bool draw_timeout_enabled_; 723 bool draw_timeout_enabled_;
(...skipping 15 matching lines...) Expand all
731 // actors changes. Listener objects aren't owned by us. 739 // actors changes. Listener objects aren't owned by us.
732 std::tr1::unordered_set<CompositionChangeListener*> 740 std::tr1::unordered_set<CompositionChangeListener*>
733 composition_change_listeners_; 741 composition_change_listeners_;
734 742
735 DISALLOW_COPY_AND_ASSIGN(RealCompositor); 743 DISALLOW_COPY_AND_ASSIGN(RealCompositor);
736 }; 744 };
737 745
738 } // namespace window_manager 746 } // namespace window_manager
739 747
740 #endif // WINDOW_MANAGER_COMPOSITOR_REAL_COMPOSITOR_H_ 748 #endif // WINDOW_MANAGER_COMPOSITOR_REAL_COMPOSITOR_H_
OLDNEW
« no previous file with comments | « compositor/gles/opengles_visitor.cc ('k') | compositor/real_compositor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698