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

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: 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
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) || defined(COMPOSITOR_OPENGLES)\
28 #error COMPOSITOR_OPENGL or COMPOSITOR_OPENGLES must be defined 28 || defined(COMPOSITOR_XRENDER))
Daniel Erat 2011/04/02 14:54:36 improve indenting? #if !(defined(...) || \
marcheu 2011/04/04 19:55:58 Done.
29 #error COMPOSITOR_OPENGL, COMPOSITOR_OPENGLES or\
30 COMPOSITOR_XRENDER must be defined
29 #endif 31 #endif
30 32
31 namespace window_manager { 33 namespace window_manager {
32 34
33 class EventLoop; 35 class EventLoop;
34 class Gles2Interface; 36 class Gles2Interface;
35 class GLInterface; 37 class GLInterface;
36 class OpenGlDrawVisitor; 38 class OpenGlDrawVisitor;
37 class OpenGlesDrawVisitor; 39 class OpenGlesDrawVisitor;
38 class TextureData; 40 class TextureData;
39 class XConnection; 41 class XConnection;
42 class XRenderDrawVisitor;
40 43
41 class RealCompositor : public Compositor { 44 class RealCompositor : public Compositor {
42 public: 45 public:
43 class Actor; 46 class Actor;
44 class ColoredBoxActor; 47 class ColoredBoxActor;
45 class ContainerActor; 48 class ContainerActor;
46 class ImageActor; 49 class ImageActor;
47 class QuadActor; 50 class QuadActor;
48 class StageActor; 51 class StageActor;
49 class TexturePixmapActor; 52 class TexturePixmapActor;
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
584 587
585 // Has the stage been resized? This gets set by SetSizeImpl() and 588 // Has the stage been resized? This gets set by SetSizeImpl() and
586 // then checked and reset by the visitor after it resizes the viewport. 589 // then checked and reset by the visitor after it resizes the viewport.
587 bool was_resized_; 590 bool was_resized_;
588 591
589 Compositor::Color stage_color_; 592 Compositor::Color stage_color_;
590 DISALLOW_COPY_AND_ASSIGN(StageActor); 593 DISALLOW_COPY_AND_ASSIGN(StageActor);
591 }; 594 };
592 595
593 RealCompositor(EventLoop* event_loop, 596 RealCompositor(EventLoop* event_loop,
594 XConnection* x_conn, 597 XConnection* x_conn
595 #if defined(COMPOSITOR_OPENGL) 598 #if defined(COMPOSITOR_OPENGL)
596 GLInterface* gl_interface 599 ,GLInterface* gl_interface
597 #elif defined(COMPOSITOR_OPENGLES) 600 #elif defined(COMPOSITOR_OPENGLES)
598 Gles2Interface* gl_interface 601 ,Gles2Interface* gl_interface
599 #endif 602 #endif
600 ); 603 );
601 ~RealCompositor(); 604 ~RealCompositor();
602 605
603 // Begin Compositor methods. 606 // Begin Compositor methods.
604 virtual void RegisterCompositionChangeListener( 607 virtual void RegisterCompositionChangeListener(
605 CompositionChangeListener* listener); 608 CompositionChangeListener* listener);
606 virtual void UnregisterCompositionChangeListener( 609 virtual void UnregisterCompositionChangeListener(
607 CompositionChangeListener* listener); 610 CompositionChangeListener* listener);
608 virtual bool TexturePixmapActorUsesFastPath() { 611 virtual bool TexturePixmapActorUsesFastPath() {
(...skipping 15 matching lines...) Expand all
624 virtual void Draw(); 627 virtual void Draw();
625 // End Compositor methods 628 // End Compositor methods
626 629
627 XConnection* x_conn() { return x_conn_; } 630 XConnection* x_conn() { return x_conn_; }
628 // TODO: These are just here so that ImageActor::SetImageData() can 631 // TODO: These are just here so that ImageActor::SetImageData() can
629 // update its texture. Find a better way to expose this. 632 // update its texture. Find a better way to expose this.
630 #if defined(COMPOSITOR_OPENGL) 633 #if defined(COMPOSITOR_OPENGL)
631 OpenGlDrawVisitor* draw_visitor() { return draw_visitor_.get(); } 634 OpenGlDrawVisitor* draw_visitor() { return draw_visitor_.get(); }
632 #elif defined(COMPOSITOR_OPENGLES) 635 #elif defined(COMPOSITOR_OPENGLES)
633 OpenGlesDrawVisitor* draw_visitor() { return draw_visitor_.get(); } 636 OpenGlesDrawVisitor* draw_visitor() { return draw_visitor_.get(); }
637 #elif defined(COMPOSITOR_XRENDER)
638 XRenderDrawVisitor* draw_visitor() { return draw_visitor_.get(); }
634 #endif 639 #endif
635 int actor_count() { return actor_count_; } 640 int actor_count() { return actor_count_; }
636 bool dirty() const { return dirty_; } 641 bool dirty() const { return dirty_; }
637 bool using_visibility_groups() const { 642 bool using_visibility_groups() const {
638 return !active_visibility_groups_.empty(); 643 return !active_visibility_groups_.empty();
639 } 644 }
640 const std::tr1::unordered_set<int>& active_visibility_groups() const { 645 const std::tr1::unordered_set<int>& active_visibility_groups() const {
641 return active_visibility_groups_; 646 return active_visibility_groups_;
642 } 647 }
643 648
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 701
697 // This is the count of actors in the tree as of the last time 702 // 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 703 // Update was called. It is used to compute the depth delta for
699 // layer depth calculations. 704 // layer depth calculations.
700 int32 actor_count_; 705 int32 actor_count_;
701 706
702 #if defined(COMPOSITOR_OPENGL) 707 #if defined(COMPOSITOR_OPENGL)
703 scoped_ptr<OpenGlDrawVisitor> draw_visitor_; 708 scoped_ptr<OpenGlDrawVisitor> draw_visitor_;
704 #elif defined(COMPOSITOR_OPENGLES) 709 #elif defined(COMPOSITOR_OPENGLES)
705 scoped_ptr<OpenGlesDrawVisitor> draw_visitor_; 710 scoped_ptr<OpenGlesDrawVisitor> draw_visitor_;
711 #elif defined(COMPOSITOR_XRENDER)
712 scoped_ptr<XRenderDrawVisitor> draw_visitor_;
706 #endif 713 #endif
707 714
708 // Time that we last drew the scene. 715 // Time that we last drew the scene.
709 base::TimeTicks last_draw_time_; 716 base::TimeTicks last_draw_time_;
710 717
711 // ID of the event loop timeout used to invoke Draw(). 718 // ID of the event loop timeout used to invoke Draw().
712 int draw_timeout_id_; 719 int draw_timeout_id_;
713 720
714 // Is the drawing timeout currently enabled? 721 // Is the drawing timeout currently enabled?
715 bool draw_timeout_enabled_; 722 bool draw_timeout_enabled_;
(...skipping 15 matching lines...) Expand all
731 // actors changes. Listener objects aren't owned by us. 738 // actors changes. Listener objects aren't owned by us.
732 std::tr1::unordered_set<CompositionChangeListener*> 739 std::tr1::unordered_set<CompositionChangeListener*>
733 composition_change_listeners_; 740 composition_change_listeners_;
734 741
735 DISALLOW_COPY_AND_ASSIGN(RealCompositor); 742 DISALLOW_COPY_AND_ASSIGN(RealCompositor);
736 }; 743 };
737 744
738 } // namespace window_manager 745 } // namespace window_manager
739 746
740 #endif // WINDOW_MANAGER_COMPOSITOR_REAL_COMPOSITOR_H_ 747 #endif // WINDOW_MANAGER_COMPOSITOR_REAL_COMPOSITOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698