Merge lp:~3v1n0/unity/fix-nvidia-glDrawArrays-crash-5.0 into lp:unity

Proposed by Marco Trevisan (Treviño)
Status: Superseded
Proposed branch: lp:~3v1n0/unity/fix-nvidia-glDrawArrays-crash-5.0
Merge into: lp:unity
Prerequisite: lp:~thumper/unity/regional-damage-sru
Diff against target: 892 lines (+477/-136) (has conflicts)
10 files modified
launcher/EdgeBarrierController.cpp (+31/-1)
launcher/EdgeBarrierController.h (+6/-0)
launcher/LauncherController.cpp (+24/-113)
launcher/LauncherIcon.cpp (+10/-8)
plugins/unityshell/src/LauncherControllerPrivate.h (+160/-0)
plugins/unityshell/src/unityshell.cpp (+14/-0)
tests/CMakeLists.txt (+16/-1)
tests/test_launcher_controller.cpp (+205/-0)
unity-shared/UScreen.cpp (+4/-3)
unity-shared/UScreen.h (+7/-10)
Text conflict in AUTHORS
Text conflict in CMakeLists.txt
Text conflict in ChangeLog
Text conflict in UnityCore/GLibSignal.h
Text conflict in dash/DashController.cpp
Text conflict in dash/DashView.cpp
Text conflict in dash/PlacesGroup.cpp
Text conflict in dash/ResultViewGrid.cpp
Text conflict in dash/ResultViewGrid.h
Text conflict in hud/HudButton.cpp
Text conflict in hud/HudButton.h
Text conflict in hud/HudController.cpp
Text conflict in hud/HudController.h
Path conflict: hud/HudPrivate.cpp / plugins/unityshell/src/HudPrivate.cpp
Path conflict: hud/HudPrivate.h / plugins/unityshell/src/HudPrivate.h
Text conflict in hud/HudView.cpp
Text conflict in hud/HudView.h
Text conflict in launcher/AbstractLauncherIcon.h
Text conflict in launcher/BamfLauncherIcon.cpp
Text conflict in launcher/BamfLauncherIcon.h
Text conflict in launcher/DeviceLauncherIcon.cpp
Text conflict in launcher/DeviceLauncherIcon.h
Text conflict in launcher/DeviceLauncherSection.cpp
Text conflict in launcher/DeviceLauncherSection.h
Text conflict in launcher/DndData.cpp
Text conflict in launcher/EdgeBarrierController.cpp
Text conflict in launcher/EdgeBarrierController.h
Text conflict in launcher/Launcher.cpp
Text conflict in launcher/Launcher.h
Text conflict in launcher/LauncherController.cpp
Path conflict: launcher/LauncherControllerPrivate.h / plugins/unityshell/src/LauncherControllerPrivate.h
Text conflict in launcher/LauncherIcon.cpp
Text conflict in launcher/LauncherIcon.h
Text conflict in launcher/QuicklistView.cpp
Text conflict in launcher/QuicklistView.h
Text conflict in launcher/SimpleLauncherIcon.cpp
Text conflict in launcher/SimpleLauncherIcon.h
Text conflict in launcher/SoftwareCenterLauncherIcon.cpp
Text conflict in launcher/StandaloneLauncher.cpp
Text conflict in launcher/SwitcherController.cpp
Text conflict in launcher/SwitcherController.h
Text conflict in launcher/SwitcherView.h
Text conflict in manual-tests/Dash.txt
Text conflict in manual-tests/Launcher.txt
Text conflict in manual-tests/SoftwareCenter.txt
Text conflict in manual-tests/Switcher.txt
Text conflict in manual-tests/WindowButtons.txt
Text conflict in manual-tests/WindowManagement.txt
Text conflict in panel/PanelView.cpp
Text conflict in plugins/unityshell/src/LauncherControllerPrivate.h
Text conflict in plugins/unityshell/src/ScreenEffectFramebufferObject.cpp
Text conflict in plugins/unityshell/src/compizminimizedwindowhandler.h
Text conflict in plugins/unityshell/src/unityshell.cpp
Text conflict in plugins/unityshell/src/unityshell.h
Conflict adding files to standalone-clients.  Created directory.
Conflict because standalone-clients is not versioned, but has versioned children.  Versioned directory.
Contents conflict in standalone-clients/CMakeLists.txt
Text conflict in tests/CMakeLists.txt
Conflict adding files to tests/autopilot/autopilot.  Created directory.
Conflict because tests/autopilot/autopilot is not versioned, but has versioned children.  Versioned directory.
Conflict adding files to tests/autopilot/autopilot/emulators.  Created directory.
Conflict because tests/autopilot/autopilot/emulators is not versioned, but has versioned children.  Versioned directory.
Contents conflict in tests/autopilot/autopilot/emulators/bamf.py
Contents conflict in tests/autopilot/autopilot/keybindings.py
Contents conflict in tests/autopilot/autopilot/utilities.py
Text conflict in tests/autopilot/unity/emulators/__init__.py
Text conflict in tests/autopilot/unity/emulators/dash.py
Text conflict in tests/autopilot/unity/emulators/hud.py
Text conflict in tests/autopilot/unity/emulators/icons.py
Text conflict in tests/autopilot/unity/emulators/launcher.py
Text conflict in tests/autopilot/unity/emulators/tooltip.py
Text conflict in tests/autopilot/unity/emulators/window_manager.py
Text conflict in tests/autopilot/unity/tests/__init__.py
Text conflict in tests/autopilot/unity/tests/test_command_lens.py
Text conflict in tests/autopilot/unity/tests/test_dash.py
Text conflict in tests/autopilot/unity/tests/test_home_lens.py
Text conflict in tests/autopilot/unity/tests/test_hud.py
Text conflict in tests/autopilot/unity/tests/test_ibus.py
Contents conflict in tests/autopilot/unity/tests/test_launcher.py
Text conflict in tests/autopilot/unity/tests/test_panel.py
Text conflict in tests/autopilot/unity/tests/test_quicklist.py
Text conflict in tests/autopilot/unity/tests/test_shortcut_hint.py
Text conflict in tests/autopilot/unity/tests/test_switcher.py
Text conflict in tests/test_hud_button.cpp
Conflict adding file tests/test_hud_controller.cpp.  Moved existing file to tests/test_hud_controller.cpp.moved.
Text conflict in tests/test_hud_private.cpp
Conflict adding file tests/test_hud_view.cpp.  Moved existing file to tests/test_hud_view.cpp.moved.
Text conflict in tests/test_im_text_entry.cpp
Text conflict in tests/test_launcher_controller.cpp
Text conflict in tests/test_main.cpp
Conflict adding file tests/test_resultviewgrid.cpp.  Moved existing file to tests/test_resultviewgrid.cpp.moved.
Text conflict in tests/test_switcher_controller.cpp
Text conflict in unity-shared/IMTextEntry.cpp
Text conflict in unity-shared/IMTextEntry.h
Text conflict in unity-shared/IconTexture.h
Text conflict in unity-shared/OverlayRenderer.cpp
Text conflict in unity-shared/PluginAdapterCompiz.cpp
Text conflict in unity-shared/SearchBar.cpp
Text conflict in unity-shared/StaticCairoText.cpp
Text conflict in unity-shared/StaticCairoText.h
Text conflict in unity-shared/UBusMessages.h
Text conflict in unity-shared/UScreen.cpp
Text conflict in unity-shared/UScreen.h
Text conflict in unity-shared/UnityWindowView.h
Text conflict in unity-shared/WindowManager.cpp
Text conflict in unity-shared/WindowManager.h
To merge this branch: bzr merge lp:~3v1n0/unity/fix-nvidia-glDrawArrays-crash-5.0
Reviewer Review Type Date Requested Status
Łukasz Zemczak Needs Information
Review via email: mp+117553@code.launchpad.net

This proposal has been superseded by a proposal from 2012-08-01.

Commit message

unityshell: fix the nvidia crash on glDrawArrays disabling/enabling the client state on nuxPrologue/Epilogue

Description of the change

Fix some crashes with the NVIDIA driver, happening on glDrawArray call.
Thanks to Sam for the hint.

To post a comment you must log in.
Revision history for this message
Łukasz Zemczak (sil2100) wrote :

I see a LOT of conflicts - the diff generated by this branch is also terrible. Is it all just because the prerequisite branch is not yet merged?

review: Needs Information
Revision history for this message
Marco Trevisan (Treviño) (3v1n0) wrote :

sil, I forgot to make this request against the correct branch (lp:unity/5.0), this MR is already superseded, follow the top link to get the new request ;)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'launcher/EdgeBarrierController.cpp'
--- launcher/EdgeBarrierController.cpp 2012-08-01 00:58:23 +0000
+++ launcher/EdgeBarrierController.cpp 2012-08-01 00:58:26 +0000
@@ -65,7 +65,7 @@
65{65{
66 UScreen *uscreen = UScreen::GetDefault();66 UScreen *uscreen = UScreen::GetDefault();
6767
68 auto monitors = uscreen->GetMonitors();68 auto const& monitors = uscreen->GetMonitors();
69 ResizeBarrierList(monitors);69 ResizeBarrierList(monitors);
7070
71 uscreen->changed.connect([&](int primary, std::vector<nux::Geometry>& layout) {71 uscreen->changed.connect([&](int primary, std::vector<nux::Geometry>& layout) {
@@ -147,15 +147,24 @@
147 }147 }
148148
149 float decay_responsiveness_mult = ((parent_->options()->edge_responsiveness() - 1) * .3f) + 1;149 float decay_responsiveness_mult = ((parent_->options()->edge_responsiveness() - 1) * .3f) + 1;
150<<<<<<< TREE
150 decaymulator_.rate_of_decay = parent_->options()->edge_decay_rate() * decay_responsiveness_mult;151 decaymulator_.rate_of_decay = parent_->options()->edge_decay_rate() * decay_responsiveness_mult;
151152
153=======
154 decaymulator_->rate_of_decay = parent_->options()->edge_decay_rate() * decay_responsiveness_mult;
155
156>>>>>>> MERGE-SOURCE
152 float overcome_responsiveness_mult = ((parent_->options()->edge_responsiveness() - 1) * 1.0f) + 1;157 float overcome_responsiveness_mult = ((parent_->options()->edge_responsiveness() - 1) * 1.0f) + 1;
153 edge_overcome_pressure_ = parent_->options()->edge_overcome_pressure() * overcome_responsiveness_mult;158 edge_overcome_pressure_ = parent_->options()->edge_overcome_pressure() * overcome_responsiveness_mult;
154}159}
155160
156void EdgeBarrierController::Impl::OnPointerBarrierEvent(PointerBarrierWrapper* owner, BarrierEvent::Ptr event)161void EdgeBarrierController::Impl::OnPointerBarrierEvent(PointerBarrierWrapper* owner, BarrierEvent::Ptr event)
157{162{
163<<<<<<< TREE
158 unsigned int monitor = owner->index;164 unsigned int monitor = owner->index;
165=======
166 unsigned monitor = owner->index;
167>>>>>>> MERGE-SOURCE
159 bool process = true;168 bool process = true;
160169
161 if (monitor < subscribers_.size())170 if (monitor < subscribers_.size())
@@ -206,8 +215,14 @@
206}215}
207216
208EdgeBarrierController::EdgeBarrierController()217EdgeBarrierController::EdgeBarrierController()
218<<<<<<< TREE
209 : pimpl(new Impl(this))219 : pimpl(new Impl(this))
210{}220{}
221=======
222 : sticky_edges(false)
223 , pimpl(new Impl(this))
224{}
225>>>>>>> MERGE-SOURCE
211226
212EdgeBarrierController::~EdgeBarrierController()227EdgeBarrierController::~EdgeBarrierController()
213{}228{}
@@ -230,6 +245,7 @@
230245
231 auto const& monitors = UScreen::GetDefault()->GetMonitors();246 auto const& monitors = UScreen::GetDefault()->GetMonitors();
232 pimpl->subscribers_[monitor] = nullptr;247 pimpl->subscribers_[monitor] = nullptr;
248<<<<<<< TREE
233 pimpl->ResizeBarrierList(monitors);249 pimpl->ResizeBarrierList(monitors);
234 pimpl->SetupBarriers(monitors);250 pimpl->SetupBarriers(monitors);
235}251}
@@ -246,6 +262,20 @@
246{262{
247 pimpl->OnPointerBarrierEvent(owner, event);263 pimpl->OnPointerBarrierEvent(owner, event);
248}264}
265=======
266 pimpl->ResizeBarrierList(monitors);
267 pimpl->SetupBarriers(monitors);
268}
269
270EdgeBarrierSubscriber* EdgeBarrierController::GetSubscriber(unsigned int monitor)
271{
272 if (monitor >= pimpl->subscribers_.size())
273 return nullptr;
274
275 return pimpl->subscribers_[monitor];
276}
277
278>>>>>>> MERGE-SOURCE
249279
250}280}
251}281}
252282
=== modified file 'launcher/EdgeBarrierController.h'
--- launcher/EdgeBarrierController.h 2012-07-25 23:18:17 +0000
+++ launcher/EdgeBarrierController.h 2012-08-01 00:58:26 +0000
@@ -41,12 +41,18 @@
41 nux::RWProperty<bool> sticky_edges;41 nux::RWProperty<bool> sticky_edges;
42 nux::Property<launcher::Options::Ptr> options;42 nux::Property<launcher::Options::Ptr> options;
4343
44<<<<<<< TREE
44 void Subscribe(EdgeBarrierSubscriber* subscriber, unsigned int monitor);45 void Subscribe(EdgeBarrierSubscriber* subscriber, unsigned int monitor);
45 void Unsubscribe(EdgeBarrierSubscriber* subscriber, unsigned int monitor);46 void Unsubscribe(EdgeBarrierSubscriber* subscriber, unsigned int monitor);
46 EdgeBarrierSubscriber* GetSubscriber(unsigned int monitor);47 EdgeBarrierSubscriber* GetSubscriber(unsigned int monitor);
4748
48protected:49protected:
49 void ProcessBarrierEvent(PointerBarrierWrapper* owner, BarrierEvent::Ptr event);50 void ProcessBarrierEvent(PointerBarrierWrapper* owner, BarrierEvent::Ptr event);
51=======
52 void Subscribe(EdgeBarrierSubscriber* subscriber, unsigned int monitor);
53 void Unsubscribe(EdgeBarrierSubscriber* subscriber, unsigned int monitor);
54 EdgeBarrierSubscriber* GetSubscriber(unsigned int monitor);
55>>>>>>> MERGE-SOURCE
5056
51private:57private:
52 struct Impl;58 struct Impl;
5359
=== modified file 'launcher/LauncherController.cpp'
--- launcher/LauncherController.cpp 2012-08-01 00:58:23 +0000
+++ launcher/LauncherController.cpp 2012-08-01 00:58:26 +0000
@@ -26,21 +26,36 @@
26#include <Nux/BaseWindow.h>26#include <Nux/BaseWindow.h>
27#include <NuxCore/Logger.h>27#include <NuxCore/Logger.h>
2828
29#include "LauncherOptions.h"
30#include "BamfLauncherIcon.h"29#include "BamfLauncherIcon.h"
30#include "BFBLauncherIcon.h"
31#include "DesktopLauncherIcon.h"31#include "DesktopLauncherIcon.h"
32#include "DeviceLauncherIcon.h"32#include "DeviceLauncherIcon.h"
33#include "FavoriteStore.h"33#include "FavoriteStore.h"
34#include "HudLauncherIcon.h"34#include "HudLauncherIcon.h"
35#include "LauncherController.h"35#include "LauncherController.h"
36#include "LauncherControllerPrivate.h"36<<<<<<< TREE
37#include "LauncherControllerPrivate.h"
38=======
39#include "LauncherControllerPrivate.h"
40#include "LauncherOptions.h"
41>>>>>>> MERGE-SOURCE
37#include "SoftwareCenterLauncherIcon.h"42#include "SoftwareCenterLauncherIcon.h"
43<<<<<<< TREE
38#include "unity-shared/WindowManager.h"44#include "unity-shared/WindowManager.h"
45=======
46#include "TimeUtil.h"
47>>>>>>> MERGE-SOURCE
39#include "TrashLauncherIcon.h"48#include "TrashLauncherIcon.h"
49<<<<<<< TREE
40#include "BFBLauncherIcon.h"50#include "BFBLauncherIcon.h"
41#include "unity-shared/UScreen.h"51#include "unity-shared/UScreen.h"
42#include "unity-shared/UBusMessages.h"52#include "unity-shared/UBusMessages.h"
43#include "unity-shared/TimeUtil.h"53#include "unity-shared/TimeUtil.h"
54=======
55#include "UBusMessages.h"
56#include "UScreen.h"
57#include "WindowManager.h"
58>>>>>>> MERGE-SOURCE
4459
45namespace unity60namespace unity
46{61{
@@ -90,122 +105,12 @@
90105
91GDBusInterfaceVTable Controller::Impl::interface_vtable =106GDBusInterfaceVTable Controller::Impl::interface_vtable =
92 { Controller::Impl::OnDBusMethodCall, NULL, NULL};107 { Controller::Impl::OnDBusMethodCall, NULL, NULL};
108
93=======109=======
94}110}
95}111}
96112
97class Controller::Impl
98{
99public:
100 Impl(Display* display, Controller* parent);
101 ~Impl();
102
103 void UpdateNumWorkspaces(int workspaces);
104
105 Launcher* CreateLauncher(int monitor);
106
107 void Save();
108 void SortAndUpdate();
109
110 nux::ObjectPtr<Launcher> CurrentLauncher();
111
112 void OnIconAdded(AbstractLauncherIcon::Ptr icon);
113 void OnIconRemoved(AbstractLauncherIcon::Ptr icon);
114
115 void OnLauncherAddRequest(char* path, AbstractLauncherIcon::Ptr before);
116 void OnLauncherAddRequestSpecial(std::string const& path, AbstractLauncherIcon::Ptr before, std::string const& aptdaemon_trans_id, std::string const& icon_path,
117 int icon_x, int icon_y, int icon_size);
118 void OnLauncherRemoveRequest(AbstractLauncherIcon::Ptr icon);
119 void OnSCIconAnimationComplete(AbstractLauncherIcon::Ptr icon);
120
121 void OnLauncherEntryRemoteAdded(LauncherEntryRemote::Ptr const& entry);
122 void OnLauncherEntryRemoteRemoved(LauncherEntryRemote::Ptr const& entry);
123
124 void OnFavoriteStoreFavoriteAdded(std::string const& entry, std::string const& pos, bool before);
125 void OnFavoriteStoreFavoriteRemoved(std::string const& entry);
126 void OnFavoriteStoreReordered();
127
128
129 void InsertExpoAction();
130 void RemoveExpoAction();
131
132 void InsertDesktopIcon();
133 void RemoveDesktopIcon();
134
135 void SendHomeActivationRequest();
136
137 int MonitorWithMouse();
138
139 void InsertTrash();
140
141 void RegisterIcon(AbstractLauncherIcon::Ptr icon);
142
143 AbstractLauncherIcon::Ptr CreateFavorite(const char* file_path);
144
145 SoftwareCenterLauncherIcon::Ptr CreateSCLauncherIcon(std::string const& file_path, std::string const& aptdaemon_trans_id, std::string const& icon_path);
146
147 void SetupBamf();
148
149 void EnsureLaunchers(int primary, std::vector<nux::Geometry> const& monitors);
150
151 void OnExpoActivated();
152
153 void OnScreenChanged(int primary_monitor, std::vector<nux::Geometry>& monitors);
154
155 void OnWindowFocusChanged (guint32 xid);
156
157 void OnViewOpened(BamfMatcher* matcher, BamfView* view);
158
159 void ReceiveMouseDownOutsideArea(int x, int y, unsigned long button_flags, unsigned long key_flags);
160
161 void ReceiveLauncherKeyPress(unsigned long eventType,
162 unsigned long keysym,
163 unsigned long state,
164 const char* character,
165 unsigned short keyCount);
166
167 Controller* parent_;
168 glib::Object<BamfMatcher> matcher_;
169 glib::Signal<void, BamfMatcher*, BamfView*> view_opened_signal_;
170 LauncherModel::Ptr model_;
171 nux::ObjectPtr<Launcher> launcher_;
172 nux::ObjectPtr<Launcher> keyboard_launcher_;
173 int sort_priority_;
174 DeviceLauncherSection device_section_;
175 LauncherEntryRemoteModel remote_model_;
176 AbstractLauncherIcon::Ptr expo_icon_;
177 AbstractLauncherIcon::Ptr desktop_icon_;
178 int num_workspaces_;
179 bool show_desktop_icon_;
180 Display* display_;
181
182 guint bamf_timer_handler_id_;
183 guint launcher_key_press_handler_id_;
184 guint launcher_label_show_handler_id_;
185 guint launcher_hide_handler_id_;
186
187 bool launcher_open;
188 bool launcher_keynav;
189 bool launcher_grabbed;
190 bool reactivate_keynav;
191 int reactivate_index;
192 bool keynav_restore_window_;
193
194 UBusManager ubus;
195
196 int launcher_key_press_time_;
197
198 ui::EdgeBarrierController::Ptr edge_barriers_;
199
200 LauncherList launchers;
201
202 sigc::connection on_expoicon_activate_connection_;
203 sigc::connection launcher_key_press_connection_;
204 sigc::connection launcher_event_outside_connection_;
205};
206
207>>>>>>> MERGE-SOURCE113>>>>>>> MERGE-SOURCE
208
209Controller::Impl::Impl(Display* display, Controller* parent)114Controller::Impl::Impl(Display* display, Controller* parent)
210 : parent_(parent)115 : parent_(parent)
211 , model_(new LauncherModel())116 , model_(new LauncherModel())
@@ -214,7 +119,13 @@
214 , device_section_(volume_monitor_)119 , device_section_(volume_monitor_)
215 , show_desktop_icon_(false)120 , show_desktop_icon_(false)
216 , display_(display)121 , display_(display)
122<<<<<<< TREE
217 , matcher_(bamf_matcher_get_default())123 , matcher_(bamf_matcher_get_default())
124=======
125 , launcher_key_press_handler_id_(0)
126 , launcher_label_show_handler_id_(0)
127 , launcher_hide_handler_id_(0)
128>>>>>>> MERGE-SOURCE
218{129{
219 edge_barriers_.options = parent_->options();130 edge_barriers_.options = parent_->options();
220131
221132
=== modified file 'launcher/LauncherIcon.cpp'
--- launcher/LauncherIcon.cpp 2012-08-01 00:58:23 +0000
+++ launcher/LauncherIcon.cpp 2012-08-01 00:58:26 +0000
@@ -623,19 +623,12 @@
623623
624<<<<<<< TREE624<<<<<<< TREE
625void LauncherIcon::RecvMouseDown(int button, int monitor, unsigned long key_flags)625void LauncherIcon::RecvMouseDown(int button, int monitor, unsigned long key_flags)
626=======
627void LauncherIcon::RecvMouseDown(int button, unsigned long key_flags, int monitor)
628>>>>>>> MERGE-SOURCE
629{626{
630 if (button == 3)627 if (button == 3)
631 OpenQuicklist();628 OpenQuicklist();
632}629}
633630
634<<<<<<< TREE
635void LauncherIcon::RecvMouseUp(int button, int monitor, unsigned long key_flags)631void LauncherIcon::RecvMouseUp(int button, int monitor, unsigned long key_flags)
636=======
637void LauncherIcon::RecvMouseUp(int button, unsigned long key_flags, int monitor)
638>>>>>>> MERGE-SOURCE
639{632{
640 if (button == 3)633 if (button == 3)
641 {634 {
@@ -644,9 +637,18 @@
644 }637 }
645}638}
646639
647<<<<<<< TREE
648void LauncherIcon::RecvMouseClick(int button, int monitor, unsigned long key_flags)640void LauncherIcon::RecvMouseClick(int button, int monitor, unsigned long key_flags)
649=======641=======
642void LauncherIcon::RecvMouseDown(int button, unsigned long key_flags, int monitor)
643{
644}
645
646void LauncherIcon::RecvMouseUp(int button, unsigned long key_flags, int monitor)
647{
648 if (button == 3)
649 OpenQuicklist(false, monitor);
650}
651
650void LauncherIcon::RecvMouseClick(int button, unsigned long key_flags, int monitor)652void LauncherIcon::RecvMouseClick(int button, unsigned long key_flags, int monitor)
651>>>>>>> MERGE-SOURCE653>>>>>>> MERGE-SOURCE
652{654{
653655
=== renamed file 'launcher/LauncherControllerPrivate.h' => 'plugins/unityshell/src/LauncherControllerPrivate.h'
--- launcher/LauncherControllerPrivate.h 2012-07-25 13:42:41 +0000
+++ plugins/unityshell/src/LauncherControllerPrivate.h 2012-08-01 00:58:26 +0000
@@ -1,3 +1,4 @@
1<<<<<<< TREE
1/*2/*
2 * Copyright 2012 Canonical Ltd.3 * Copyright 2012 Canonical Ltd.
3 *4 *
@@ -161,3 +162,162 @@
161} // unity namespace162} // unity namespace
162163
163#endif164#endif
165=======
166/*
167 * Copyright 2012 Canonical Ltd.
168 *
169 * This program is free software: you can redistribute it and/or modify it
170 * under the terms of the GNU General Public License version 3, as published
171 * by the Free Software Foundation.
172 *
173 * This program is distributed in the hope that it will be useful, but
174 * WITHOUT ANY WARRANTY; without even the implied warranties of
175 * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
176 * PURPOSE. See the GNU General Public License for more details.
177 *
178 * You should have received a copy of the GNU General Public License
179 * version 3 along with this program. If not, see
180 * <http://www.gnu.org/licenses/>
181 *
182 * Authored by: Jason Smith <jason.smith@canonical.com>
183 * Tim Penhey <tim.penhey@canonical.com>
184 * Marco Trevisan (Treviño) <marco.trevisan@canonical.com>
185 *
186 */
187
188#ifndef LAUNCHER_CONTROLLER_PRIVATE_H
189#define LAUNCHER_CONTROLLER_PRIVATE_H
190
191#include <Nux/Nux.h>
192
193#include "AbstractLauncherIcon.h"
194#include "DeviceLauncherSection.h"
195#include "EdgeBarrierController.h"
196#include "LauncherController.h"
197#include "Launcher.h"
198#include "LauncherEntryRemote.h"
199#include "LauncherEntryRemoteModel.h"
200#include "LauncherModel.h"
201#include "SoftwareCenterLauncherIcon.h"
202#include "UBusWrapper.h"
203
204namespace unity
205{
206namespace launcher
207{
208
209class Controller::Impl
210{
211public:
212 Impl(Display* display, Controller* parent);
213 ~Impl();
214
215 void UpdateNumWorkspaces(int workspaces);
216
217 Launcher* CreateLauncher(int monitor);
218
219 void Save();
220 void SortAndUpdate();
221
222 nux::ObjectPtr<Launcher> CurrentLauncher();
223
224 void OnIconAdded(AbstractLauncherIcon::Ptr icon);
225 void OnIconRemoved(AbstractLauncherIcon::Ptr icon);
226
227 void OnLauncherAddRequest(char* path, AbstractLauncherIcon::Ptr before);
228 void OnLauncherAddRequestSpecial(std::string const& path, AbstractLauncherIcon::Ptr before, std::string const& aptdaemon_trans_id, std::string const& icon_path,
229 int icon_x, int icon_y, int icon_size);
230 void OnLauncherRemoveRequest(AbstractLauncherIcon::Ptr icon);
231 void OnSCIconAnimationComplete(AbstractLauncherIcon::Ptr icon);
232
233 void OnLauncherEntryRemoteAdded(LauncherEntryRemote::Ptr const& entry);
234 void OnLauncherEntryRemoteRemoved(LauncherEntryRemote::Ptr const& entry);
235
236 void OnFavoriteStoreFavoriteAdded(std::string const& entry, std::string const& pos, bool before);
237 void OnFavoriteStoreFavoriteRemoved(std::string const& entry);
238 void OnFavoriteStoreReordered();
239
240
241 void InsertExpoAction();
242 void RemoveExpoAction();
243
244 void InsertDesktopIcon();
245 void RemoveDesktopIcon();
246
247 void SendHomeActivationRequest();
248
249 int MonitorWithMouse();
250
251 void InsertTrash();
252
253 void RegisterIcon(AbstractLauncherIcon::Ptr icon);
254
255 AbstractLauncherIcon::Ptr CreateFavorite(const char* file_path);
256
257 SoftwareCenterLauncherIcon::Ptr CreateSCLauncherIcon(std::string const& file_path, std::string const& aptdaemon_trans_id, std::string const& icon_path);
258
259 void SetupBamf();
260
261 void EnsureLaunchers(int primary, std::vector<nux::Geometry> const& monitors);
262
263 void OnExpoActivated();
264
265 void OnScreenChanged(int primary_monitor, std::vector<nux::Geometry>& monitors);
266
267 void OnWindowFocusChanged (guint32 xid);
268
269 void OnViewOpened(BamfMatcher* matcher, BamfView* view);
270
271 void ReceiveMouseDownOutsideArea(int x, int y, unsigned long button_flags, unsigned long key_flags);
272
273 void ReceiveLauncherKeyPress(unsigned long eventType,
274 unsigned long keysym,
275 unsigned long state,
276 const char* character,
277 unsigned short keyCount);
278
279 Controller* parent_;
280 glib::Object<BamfMatcher> matcher_;
281 glib::Signal<void, BamfMatcher*, BamfView*> view_opened_signal_;
282 LauncherModel::Ptr model_;
283 nux::ObjectPtr<Launcher> launcher_;
284 nux::ObjectPtr<Launcher> keyboard_launcher_;
285 int sort_priority_;
286 DeviceLauncherSection device_section_;
287 LauncherEntryRemoteModel remote_model_;
288 AbstractLauncherIcon::Ptr expo_icon_;
289 AbstractLauncherIcon::Ptr desktop_icon_;
290 int num_workspaces_;
291 bool show_desktop_icon_;
292 Display* display_;
293
294 guint bamf_timer_handler_id_;
295 guint launcher_key_press_handler_id_;
296 guint launcher_label_show_handler_id_;
297 guint launcher_hide_handler_id_;
298
299 bool launcher_open;
300 bool launcher_keynav;
301 bool launcher_grabbed;
302 bool reactivate_keynav;
303 int reactivate_index;
304 bool keynav_restore_window_;
305
306 UBusManager ubus;
307
308 int launcher_key_press_time_;
309
310 ui::EdgeBarrierController edge_barriers_;
311
312 LauncherList launchers;
313
314 sigc::connection on_expoicon_activate_connection_;
315 sigc::connection launcher_key_press_connection_;
316 sigc::connection launcher_event_outside_connection_;
317};
318
319} // launcher namespace
320} // unity namespace
321
322#endif
323>>>>>>> MERGE-SOURCE
164324
=== modified file 'plugins/unityshell/src/unityshell.cpp'
--- plugins/unityshell/src/unityshell.cpp 2012-08-01 00:58:23 +0000
+++ plugins/unityshell/src/unityshell.cpp 2012-08-01 00:58:26 +0000
@@ -515,6 +515,15 @@
515515
516 glMatrixMode(GL_MODELVIEW);516 glMatrixMode(GL_MODELVIEW);
517 glPushMatrix();517 glPushMatrix();
518
519 /* This is needed to Fix a crash in glDrawArrays with the NVIDIA driver
520 * see bugs #1031554 and #982626.
521 * The NVIDIA driver looks to see if the legacy GL_VERTEX_ARRAY,
522 * GL_TEXTURE_COORDINATES_ARRAY and other such client states are enabled
523 * first before checking if a vertex buffer is bound and will prefer the
524 * client buffers over the the vertex buffer object. */
525 glDisableClientState(GL_VERTEX_ARRAY);
526 glDisableClientState(GL_TEXTURE_COORD_ARRAY);
518#endif527#endif
519528
520 glGetError();529 glGetError();
@@ -544,6 +553,11 @@
544 glReadBuffer(GL_BACK);553 glReadBuffer(GL_BACK);
545554
546 glPopAttrib();555 glPopAttrib();
556
557 /* Re-enable the client states that have been disabled in nuxPrologue , for
558 * NVIDIA compatibility reasons */
559 glEnableClientState(GL_VERTEX_ARRAY);
560 glEnableClientState(GL_TEXTURE_COORD_ARRAY);
547#else561#else
548#ifdef USE_GLES562#ifdef USE_GLES
549 glDepthRangef(0, 1);563 glDepthRangef(0, 1);
550564
=== modified file 'tests/CMakeLists.txt'
--- tests/CMakeLists.txt 2012-08-01 00:58:23 +0000
+++ tests/CMakeLists.txt 2012-08-01 00:58:26 +0000
@@ -254,6 +254,7 @@
254=======254=======
255 test_im_text_entry.cpp255 test_im_text_entry.cpp
256 test_hud_view.cpp256 test_hud_view.cpp
257 test_launcher_controller.cpp
257 test_keyboard_util.cpp258 test_keyboard_util.cpp
258 test_resultviewgrid.cpp259 test_resultviewgrid.cpp
259>>>>>>> MERGE-SOURCE260>>>>>>> MERGE-SOURCE
@@ -355,13 +356,21 @@
355 ${UNITY_SRC}/AbstractPlacesGroup.cpp356 ${UNITY_SRC}/AbstractPlacesGroup.cpp
356 ${UNITY_SRC}/Animator.cpp357 ${UNITY_SRC}/Animator.cpp
357 ${UNITY_SRC}/BackgroundEffectHelper.cpp358 ${UNITY_SRC}/BackgroundEffectHelper.cpp
359 ${UNITY_SRC}/BamfLauncherIcon.cpp
360 ${UNITY_SRC}/BFBLauncherIcon.cpp
358 ${UNITY_SRC}/CairoBaseWindow.cpp361 ${UNITY_SRC}/CairoBaseWindow.cpp
359 ${UNITY_SRC}/DashSettings.cpp362 ${UNITY_SRC}/DashSettings.cpp
360 ${UNITY_SRC}/DashStyle.cpp363 ${UNITY_SRC}/DashStyle.cpp
361 ${UNITY_SRC}/DashViewPrivate.cpp364 ${UNITY_SRC}/DashViewPrivate.cpp
362 ${UNITY_SRC}/Decaymulator.cpp365 ${UNITY_SRC}/Decaymulator.cpp
366 ${UNITY_SRC}/DesktopLauncherIcon.cpp
367 ${UNITY_SRC}/DeviceLauncherIcon.cpp
368 ${UNITY_SRC}/DeviceLauncherSection.cpp
369 ${UNITY_SRC}/DevicesSettings.cpp
363 ${UNITY_SRC}/DNDCollectionWindow.cpp370 ${UNITY_SRC}/DNDCollectionWindow.cpp
364 ${UNITY_SRC}/DndData.cpp371 ${UNITY_SRC}/DndData.cpp
372 ${UNITY_SRC}/EdgeBarrierController.cpp
373 ${UNITY_SRC}/FavoriteStore.cpp
365 ${UNITY_SRC}/GeisAdapter.cpp374 ${UNITY_SRC}/GeisAdapter.cpp
366 ${UNITY_SRC}/IconLoader.cpp375 ${UNITY_SRC}/IconLoader.cpp
367 ${UNITY_SRC}/IconRenderer.cpp376 ${UNITY_SRC}/IconRenderer.cpp
@@ -374,16 +383,21 @@
374 ${UNITY_SRC}/HudController.cpp383 ${UNITY_SRC}/HudController.cpp
375 ${UNITY_SRC}/HudIcon.cpp384 ${UNITY_SRC}/HudIcon.cpp
376 ${UNITY_SRC}/HudIconTextureSource.cpp385 ${UNITY_SRC}/HudIconTextureSource.cpp
386 ${UNITY_SRC}/HudLauncherIcon.cpp
377 ${UNITY_SRC}/HudPrivate.cpp387 ${UNITY_SRC}/HudPrivate.cpp
378 ${UNITY_SRC}/HudView.cpp388 ${UNITY_SRC}/HudView.cpp
389 ${UNITY_SRC}/IntrospectableWrappers.cpp
379 ${UNITY_SRC}/LayoutSystem.cpp390 ${UNITY_SRC}/LayoutSystem.cpp
380 ${UNITY_SRC}/Launcher.cpp391 ${UNITY_SRC}/Launcher.cpp
381 ${UNITY_SRC}/LauncherDragWindow.cpp392 ${UNITY_SRC}/LauncherDragWindow.cpp
393 ${UNITY_SRC}/LauncherController.cpp
382 ${UNITY_SRC}/LauncherEntryRemote.cpp394 ${UNITY_SRC}/LauncherEntryRemote.cpp
395 ${UNITY_SRC}/LauncherEntryRemoteModel.cpp
383 ${UNITY_SRC}/LauncherHideMachine.cpp396 ${UNITY_SRC}/LauncherHideMachine.cpp
384 ${UNITY_SRC}/LauncherHoverMachine.cpp397 ${UNITY_SRC}/LauncherHoverMachine.cpp
385 ${UNITY_SRC}/LauncherIcon.cpp398 ${UNITY_SRC}/LauncherIcon.cpp
386 ${UNITY_SRC}/LauncherModel.cpp399 ${UNITY_SRC}/LauncherModel.cpp
400 ${UNITY_SRC}/LauncherOptions.cpp
387 ${UNITY_SRC}/KeyboardUtil.cpp401 ${UNITY_SRC}/KeyboardUtil.cpp
388 ${UNITY_SRC}/OverlayRenderer.cpp402 ${UNITY_SRC}/OverlayRenderer.cpp
389 ${UNITY_SRC}/JSONParser.cpp403 ${UNITY_SRC}/JSONParser.cpp
@@ -407,6 +421,7 @@
407 ${UNITY_SRC}/QuicklistMenuItemLabel.cpp421 ${UNITY_SRC}/QuicklistMenuItemLabel.cpp
408 ${UNITY_SRC}/QuicklistMenuItemRadio.cpp422 ${UNITY_SRC}/QuicklistMenuItemRadio.cpp
409 ${UNITY_SRC}/QuicklistMenuItemSeparator.cpp423 ${UNITY_SRC}/QuicklistMenuItemSeparator.cpp
424 ${UNITY_SRC}/SoftwareCenterLauncherIcon.cpp
410 ${UNITY_SRC}/SpacerLauncherIcon.cpp425 ${UNITY_SRC}/SpacerLauncherIcon.cpp
411 ${UNITY_SRC}/TextureCache.cpp426 ${UNITY_SRC}/TextureCache.cpp
412 ${UNITY_SRC}/UBusWrapper.cpp427 ${UNITY_SRC}/UBusWrapper.cpp
@@ -418,7 +433,7 @@
418 ${UNITY_SRC}/ResultView.cpp433 ${UNITY_SRC}/ResultView.cpp
419 ${UNITY_SRC}/ResultViewGrid.cpp434 ${UNITY_SRC}/ResultViewGrid.cpp
420 ${UNITY_SRC}/ResultRenderer.cpp435 ${UNITY_SRC}/ResultRenderer.cpp
421 ${UNITY_SRC}/IntrospectableWrappers.cpp436 ${UNITY_SRC}/TrashLauncherIcon.cpp
422>>>>>>> MERGE-SOURCE437>>>>>>> MERGE-SOURCE
423 )438 )
424 target_link_libraries(test-gtest gtest gmock ${LIBS})439 target_link_libraries(test-gtest gtest gmock ${LIBS})
425440
=== modified file 'tests/test_launcher_controller.cpp'
--- tests/test_launcher_controller.cpp 2012-07-26 13:09:16 +0000
+++ tests/test_launcher_controller.cpp 2012-08-01 00:58:26 +0000
@@ -1,3 +1,4 @@
1<<<<<<< TREE
1/*2/*
2 * Copyright 2012 Canonical Ltd.3 * Copyright 2012 Canonical Ltd.
3 *4 *
@@ -200,3 +201,207 @@
200}201}
201202
202}203}
204=======
205/*
206 * Copyright 2012 Canonical Ltd.
207 *
208 * This program is free software: you can redistribute it and/or modify it
209 * under the terms of the GNU General Public License version 3, as published
210 * by the Free Software Foundation.
211 *
212 * This program is distributed in the hope that it will be useful, but
213 * WITHOUT ANY WARRANTY; without even the implied warranties of
214 * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
215 * PURPOSE. See the GNU General Public License for more details.
216 *
217 * You should have received a copy of the GNU General Public License
218 * version 3 along with this program. If not, see
219 * <http://www.gnu.org/licenses/>
220 *
221 * Authored by: Marco Trevisan (Treviño) <marco.trevisan@canonical.com>
222 */
223
224#include <gmock/gmock.h>
225#include "test_uscreen_mock.h"
226
227#include "FavoriteStore.h"
228#include "LauncherController.h"
229#include "LauncherControllerPrivate.h"
230#include "PanelStyle.h"
231#include "DashSettings.h"
232
233using namespace unity::launcher;
234using namespace testing;
235
236namespace unity
237{
238
239class MockFavoriteStore : public FavoriteStore
240{
241public:
242 FavoriteList const& GetFavorites()
243 {
244 return fav_list_;
245 };
246
247 void AddFavorite(std::string const& desktop_path, int position) {};
248 void RemoveFavorite(std::string const& desktop_path) {};
249 void MoveFavorite(std::string const& desktop_path, int position) {};
250 void SetFavorites(FavoriteList const& desktop_paths) {};
251
252private:
253 FavoriteList fav_list_;
254};
255
256namespace launcher
257{
258class TestLauncherController : public testing::Test
259{
260public:
261 TestLauncherController()
262 : lc(nux::GetGraphicsDisplay()->GetX11Display())
263 {}
264
265 virtual void SetUp()
266 {
267 lc.options = std::make_shared<Options>();
268 lc.multiple_launchers = true;
269 }
270
271protected:
272 ui::EdgeBarrierController &GetBarrierController()
273 {
274 return lc.pimpl->edge_barriers_;
275 }
276
277 MockUScreen uscreen;
278 dash::Settings settings;
279 panel::Style panel_style;
280 GeisAdapter geis_adapter;
281 MockFavoriteStore favorite_store;
282 Controller lc;
283};
284}
285
286TEST_F(TestLauncherController, Construction)
287{
288 EXPECT_NE(lc.options(), nullptr);
289 EXPECT_TRUE(lc.multiple_launchers());
290}
291
292TEST_F(TestLauncherController, MultimonitorMultipleLaunchers)
293{
294 lc.multiple_launchers = true;
295 uscreen.SetupFakeMultiMonitor();
296
297 ASSERT_EQ(lc.launchers().size(), max_num_monitors);
298
299 for (int i = 0; i < max_num_monitors; ++i)
300 {
301 EXPECT_EQ(lc.launchers()[i]->monitor(), i);
302 }
303}
304
305TEST_F(TestLauncherController, MultimonitorSingleLauncher)
306{
307 lc.multiple_launchers = false;
308 uscreen.SetupFakeMultiMonitor(0, false);
309
310 for (int i = 0; i < max_num_monitors; ++i)
311 {
312 uscreen.SetPrimary(i);
313 ASSERT_EQ(lc.launchers().size(), 1);
314 EXPECT_EQ(lc.launcher().monitor(), i);
315 }
316}
317
318TEST_F(TestLauncherController, MultimonitorSwitchToMultipleLaunchers)
319{
320 lc.multiple_launchers = false;
321 uscreen.SetupFakeMultiMonitor();
322
323 ASSERT_EQ(lc.launchers().size(), 1);
324
325 lc.multiple_launchers = true;
326 EXPECT_EQ(lc.launchers().size(), max_num_monitors);
327}
328
329TEST_F(TestLauncherController, MultimonitorSwitchToSingleLauncher)
330{
331 lc.multiple_launchers = true;
332 int primary = 3;
333 uscreen.SetupFakeMultiMonitor(primary);
334
335 ASSERT_EQ(lc.launchers().size(), max_num_monitors);
336
337 lc.multiple_launchers = false;
338 EXPECT_EQ(lc.launchers().size(), 1);
339 EXPECT_EQ(lc.launcher().monitor(), primary);
340}
341
342TEST_F(TestLauncherController, MultimonitorSwitchToSingleMonitor)
343{
344 uscreen.SetupFakeMultiMonitor();
345 ASSERT_EQ(lc.launchers().size(), max_num_monitors);
346
347 uscreen.Reset();
348 EXPECT_EQ(lc.launchers().size(), 1);
349 EXPECT_EQ(lc.launcher().monitor(), 0);
350}
351
352TEST_F(TestLauncherController, MultimonitorRemoveMiddleMonitor)
353{
354 uscreen.SetupFakeMultiMonitor();
355 ASSERT_EQ(lc.launchers().size(), max_num_monitors);
356
357 std::vector<nux::Geometry> &monitors = uscreen.GetMonitors();
358 monitors.erase(monitors.begin() + monitors.size()/2);
359 uscreen.changed.emit(uscreen.GetPrimaryMonitor(), uscreen.GetMonitors());
360 ASSERT_EQ(lc.launchers().size(), max_num_monitors - 1);
361
362 for (int i = 0; i < max_num_monitors - 1; ++i)
363 EXPECT_EQ(lc.launchers()[i]->monitor(), i);
364}
365
366TEST_F(TestLauncherController, SingleMonitorSwitchToMultimonitor)
367{
368 ASSERT_EQ(lc.launchers().size(), 1);
369
370 uscreen.SetupFakeMultiMonitor();
371
372 EXPECT_EQ(lc.launchers().size(), max_num_monitors);
373}
374
375TEST_F(TestLauncherController, MultiMonitorEdgeBarrierSubscriptions)
376{
377 uscreen.SetupFakeMultiMonitor();
378
379 for (int i = 0; i < max_num_monitors; ++i)
380 ASSERT_EQ(GetBarrierController().GetSubscriber(i), lc.launchers()[i].GetPointer());
381}
382
383TEST_F(TestLauncherController, SingleMonitorEdgeBarrierSubscriptionsUpdates)
384{
385 lc.multiple_launchers = false;
386 uscreen.SetupFakeMultiMonitor(0, false);
387
388 for (int i = 0; i < max_num_monitors; ++i)
389 {
390 uscreen.SetPrimary(i);
391
392 for (int j = 0; j < max_num_monitors; ++j)
393 {
394 if (j == i)
395 {
396 ASSERT_EQ(GetBarrierController().GetSubscriber(j), &lc.launcher());
397 }
398 else
399 {
400 ASSERT_EQ(GetBarrierController().GetSubscriber(j), nullptr);
401 }
402 }
403 }
404}
405
406}
407>>>>>>> MERGE-SOURCE
203408
=== modified file 'unity-shared/UScreen.cpp'
--- unity-shared/UScreen.cpp 2012-08-01 00:58:23 +0000
+++ unity-shared/UScreen.cpp 2012-08-01 00:58:26 +0000
@@ -37,9 +37,10 @@
3737
38namespace38namespace
39{39{
40static UScreen* default_screen_ = nullptr;
41nux::logging::Logger logger("unity.screen");40nux::logging::Logger logger("unity.screen");
42} 41}
42
43UScreen* UScreen::default_screen_ = nullptr;
43>>>>>>> MERGE-SOURCE44>>>>>>> MERGE-SOURCE
4445
45UScreen::UScreen()46UScreen::UScreen()
@@ -51,13 +52,13 @@
51 "org.freedesktop.UPower",52 "org.freedesktop.UPower",
52 G_BUS_TYPE_SYSTEM)53 G_BUS_TYPE_SYSTEM)
53=======54=======
54 : screen_(gdk_screen_get_default(), glib::AddRef())55 : primary_(0)
56 , screen_(gdk_screen_get_default(), glib::AddRef())
55 , proxy_("org.freedesktop.UPower",57 , proxy_("org.freedesktop.UPower",
56 "/org/freedesktop/UPower",58 "/org/freedesktop/UPower",
57 "org.freedesktop.UPower",59 "org.freedesktop.UPower",
58 G_BUS_TYPE_SYSTEM)60 G_BUS_TYPE_SYSTEM)
59 , refresh_id_(0)61 , refresh_id_(0)
60 , primary_(0)
61>>>>>>> MERGE-SOURCE62>>>>>>> MERGE-SOURCE
62{63{
63 size_changed_signal_.Connect(screen_, "size-changed", sigc::mem_fun(this, &UScreen::Changed));64 size_changed_signal_.Connect(screen_, "size-changed", sigc::mem_fun(this, &UScreen::Changed));
6465
=== modified file 'unity-shared/UScreen.h'
--- unity-shared/UScreen.h 2012-08-01 00:58:23 +0000
+++ unity-shared/UScreen.h 2012-08-01 00:58:26 +0000
@@ -64,19 +64,9 @@
64 void Changed(GdkScreen* screen);64 void Changed(GdkScreen* screen);
65 void Refresh();65 void Refresh();
6666
67<<<<<<< TREE
68protected:67protected:
69 static UScreen* default_screen_;68 static UScreen* default_screen_;
70 std::vector<nux::Geometry> monitors_;69 std::vector<nux::Geometry> monitors_;
71=======
72private:
73 std::vector<nux::Geometry> monitors_;
74 glib::Object<GdkScreen> screen_;
75 glib::DBusProxy proxy_;
76 glib::Signal<void, GdkScreen*> size_changed_signal_;
77 glib::Signal<void, GdkScreen*> monitors_changed_signal_;
78 guint refresh_id_;
79>>>>>>> MERGE-SOURCE
80 int primary_;70 int primary_;
81<<<<<<< TREE71<<<<<<< TREE
8272
@@ -87,6 +77,13 @@
87 glib::Signal<void, GdkScreen*> monitors_changed_signal_;77 glib::Signal<void, GdkScreen*> monitors_changed_signal_;
88 glib::Source::UniquePtr refresh_idle_;78 glib::Source::UniquePtr refresh_idle_;
89=======79=======
80
81private:
82 glib::Object<GdkScreen> screen_;
83 glib::DBusProxy proxy_;
84 glib::Signal<void, GdkScreen*> size_changed_signal_;
85 glib::Signal<void, GdkScreen*> monitors_changed_signal_;
86 guint refresh_id_;
90>>>>>>> MERGE-SOURCE87>>>>>>> MERGE-SOURCE
91};88};
9289