diff options
author | Yaniv Kamay <ykamay@redhat.com> | 2009-11-16 17:50:16 +0200 |
---|---|---|
committer | Yaniv Kamay <ykamay@redhat.com> | 2009-11-30 18:03:35 +0200 |
commit | 3b51087b3656b111886c7397d0ddd499a96f9e2d (patch) | |
tree | 21cdb7b0dc282062bd811f65ee295a7074b58275 /client/screen_layer.cpp | |
parent | a70110c4e50aad99de7a844bb78eb868768e7841 (diff) | |
download | spice-3b51087b3656b111886c7397d0ddd499a96f9e2d.tar.gz spice-3b51087b3656b111886c7397d0ddd499a96f9e2d.tar.xz spice-3b51087b3656b111886c7397d0ddd499a96f9e2d.zip |
client: interactive screen layer
Diffstat (limited to 'client/screen_layer.cpp')
-rw-r--r-- | client/screen_layer.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/client/screen_layer.cpp b/client/screen_layer.cpp index 9940ad86..d4a4435f 100644 --- a/client/screen_layer.cpp +++ b/client/screen_layer.cpp @@ -108,6 +108,13 @@ void ScreenLayer::invalidate() invalidate(_area); } +void ScreenLayer::notify_changed() +{ + if (_screen) { + _screen->on_layer_changed(*this); + } +} + void ScreenLayer::set_area(const QRegion& area) { Lock lock(_area_lock); @@ -115,6 +122,7 @@ void ScreenLayer::set_area(const QRegion& area) region_destroy(&_area); region_clone(&_area, &area); invalidate(); + notify_changed(); } void ScreenLayer::clear_area() @@ -122,6 +130,7 @@ void ScreenLayer::clear_area() Lock lock(_area_lock); invalidate(); region_clear(&_area); + notify_changed(); } void ScreenLayer::set_rect_area(const Rect& r) @@ -131,6 +140,7 @@ void ScreenLayer::set_rect_area(const Rect& r) region_clear(&_area); region_add(&_area, &r); invalidate(); + notify_changed(); } void ScreenLayer::offset_area(int dx, int dy) @@ -139,12 +149,14 @@ void ScreenLayer::offset_area(int dx, int dy) invalidate(); region_offset(&_area, dx, dy); invalidate(); + notify_changed(); } void ScreenLayer::add_rect_area(const Rect& r) { Lock lock(_area_lock); region_add(&_area, &r); + notify_changed(); } void ScreenLayer::remove_rect_area(const Rect& r) @@ -152,6 +164,7 @@ void ScreenLayer::remove_rect_area(const Rect& r) Lock lock(_area_lock); invalidate(); region_remove(&_area, &r); + notify_changed(); } void ScreenLayer::begin_update(QRegion& direct_rgn, QRegion& composit_rgn) @@ -175,6 +188,12 @@ void ScreenLayer::begin_update(QRegion& direct_rgn, QRegion& composit_rgn) } } +bool ScreenLayer::contains_point(int x, int y) +{ + Lock lock(_area_lock); + return !!region_contains_point(&_area, x, y); +} + void ScreenLayer::attach_to_screen(Application& applicaion, int screen_id) { if (_screen) { |