summaryrefslogtreecommitdiff
path: root/chromium/ui/base/x/x11_workspace_handler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/base/x/x11_workspace_handler.cc')
-rw-r--r--chromium/ui/base/x/x11_workspace_handler.cc30
1 files changed, 10 insertions, 20 deletions
diff --git a/chromium/ui/base/x/x11_workspace_handler.cc b/chromium/ui/base/x/x11_workspace_handler.cc
index cb48d38fc4a..adf92e51adb 100644
--- a/chromium/ui/base/x/x11_workspace_handler.cc
+++ b/chromium/ui/base/x/x11_workspace_handler.cc
@@ -50,37 +50,27 @@ std::string X11WorkspaceHandler::GetCurrentWorkspace() {
return workspace_;
}
-bool X11WorkspaceHandler::DispatchXEvent(x11::Event* x11_event) {
- XEvent* event = &x11_event->xlib_event();
- if (event->type != PropertyNotify ||
- event->xproperty.window != static_cast<uint32_t>(x_root_window_)) {
- return false;
- }
- switch (event->type) {
- case x11::PropertyNotifyEvent::opcode: {
- if (event->xproperty.atom ==
- static_cast<uint32_t>(gfx::GetAtom("_NET_CURRENT_DESKTOP"))) {
- GetWorkspace().OnResponse(
- base::BindOnce(&X11WorkspaceHandler::OnWorkspaceResponse,
- weak_factory_.GetWeakPtr()));
- }
- break;
- }
- default:
- NOTREACHED();
+bool X11WorkspaceHandler::DispatchXEvent(x11::Event* xev) {
+ auto* prop = xev->As<x11::PropertyNotifyEvent>();
+ if (prop && prop->window == x_root_window_ &&
+ prop->atom == gfx::GetAtom("_NET_CURRENT_DESKTOP")) {
+ GetWorkspace().OnResponse(base::BindOnce(
+ &X11WorkspaceHandler::OnWorkspaceResponse, weak_factory_.GetWeakPtr()));
+ return true;
}
+
return false;
}
void X11WorkspaceHandler::OnWorkspaceResponse(
x11::GetPropertyResponse response) {
- if (!response || response->format != 32 || response->value.size() < 4)
+ if (!response || response->format != 32 || response->value->size() < 4)
return;
DCHECK_EQ(response->bytes_after, 0U);
DCHECK_EQ(response->type, static_cast<x11::Atom>(gfx::GetAtom("CARDINAL")));
uint32_t workspace;
- memcpy(&workspace, response->value.data(), 4);
+ memcpy(&workspace, response->value->data(), 4);
workspace_ = base::NumberToString(workspace);
delegate_->OnCurrentWorkspaceChanged(workspace_);
}