blob: 39d98e2206938bf4bbb10489852266fa83c8e74b [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/gl/gl_surface_glx_x11.h"
#include "ui/events/platform/platform_event_source.h"
#include "ui/gfx/x/x11.h"
#include "ui/gfx/x/x11_types.h"
namespace gl {
GLSurfaceGLXX11::GLSurfaceGLXX11(gfx::AcceleratedWidget window)
: NativeViewGLSurfaceGLX(window) {}
GLSurfaceGLXX11::~GLSurfaceGLXX11() {
Destroy();
}
void GLSurfaceGLXX11::RegisterEvents() {
auto* event_source = ui::PlatformEventSource::GetInstance();
// Can be null in tests, when we don't care about Exposes.
if (event_source) {
XSelectInput(gfx::GetXDisplay(), window(), ExposureMask);
event_source->AddPlatformEventDispatcher(this);
}
}
void GLSurfaceGLXX11::UnregisterEvents() {
auto* event_source = ui::PlatformEventSource::GetInstance();
if (event_source)
event_source->RemovePlatformEventDispatcher(this);
}
bool GLSurfaceGLXX11::CanDispatchEvent(const ui::PlatformEvent& event) {
return CanHandleEvent(event);
}
uint32_t GLSurfaceGLXX11::DispatchEvent(const ui::PlatformEvent& event) {
ForwardExposeEvent(event);
return ui::POST_DISPATCH_STOP_PROPAGATION;
}
} // namespace gl