// Copyright 2023 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef REMOTING_HOST_LINUX_GNOME_DISPLAY_CONFIG_DBUS_CLIENT_H_ #define REMOTING_HOST_LINUX_GNOME_DISPLAY_CONFIG_DBUS_CLIENT_H_ #include <gio/gio.h> #include "base/functional/callback.h" #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" #include "base/task/sequenced_task_runner.h" #include "remoting/host/linux/gnome_display_config.h" #include "remoting/host/linux/scoped_glib.h" #include "ui/base/glib/scoped_gobject.h" namespace remoting { // This class provides a wrapper for the GNOME D-Bus API for querying the // current display (monitor) configuration, and for applying a modified config. // This wrapper never blocks the caller thread - the caller provides a // OnceCallback to receive the current config. The caller can modify the // returned GnomeDisplayConfig structure, and then ask GNOME to apply the // changes. Note that applying a display config will take effect immediately, // but will also cause GNOME to display a warning which allows the user to keep // or revert the changes. // // Instances of this class only support a single callback at a time - later // requests will cancel earlier ones. Changes to GNOME's display config // should be infrequent, and if multiple operations are ongoing, only the // latest operation should take effect. class GnomeDisplayConfigDBusClient { … }; } // namespace remoting #endif // REMOTING_HOST_LINUX_GNOME_DISPLAY_CONFIG_DBUS_CLIENT_H_