summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorQue Quotion2018-06-04 03:54:51 +0900
committerQue Quotion2018-06-04 03:54:51 +0900
commitfd3f9998fe138c648d72885a0a6819dbfd13effc (patch)
treeee0c0d7503684fc1e0e97db00fa973ab6a6b9d38
parentb4b2e6cb6333b071610e4cd688ea95f45274715a (diff)
downloadaur-fd3f9998fe138c648d72885a0a6819dbfd13effc.tar.gz
Simplify patching out gala dependent functions
-rw-r--r--.SRCINFO6
-rw-r--r--PKGBUILD11
-rw-r--r--minus-backgroundmanager.patch217
-rw-r--r--minus-galaplugin.patch547
4 files changed, 18 insertions, 763 deletions
diff --git a/.SRCINFO b/.SRCINFO
index d5b2f1b8915..2a69340474d 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = wingpanel-standalone-git
pkgdesc = Stylish top panel that holds indicators and spawns an application launcher (without Gala dependencies)
- pkgver = r351.ce82b43
+ pkgver = r355.69a0e08
pkgrel = 1
url = https://github.com/elementary/wingpanel
arch = i686
@@ -47,8 +47,8 @@ pkgbase = wingpanel-standalone-git
source = y-is-broken-cogl.patch
source = autohide.patch
sha256sums = SKIP
- sha256sums = edce8ae7810a0782cabb0a7cbe7857c47502ca11595d11a26c1d24234f76a54a
- sha256sums = fa564fa2ce3da51adf4babaaa7dda4a18b1ce900acaf5e19df81d49b593200e3
+ sha256sums = b8bfc357158efb84113e234f9d0efa108cea460a3d160c2db25d966c93412875
+ sha256sums = a1c6e3a9c1553abdf1f676b1861531c3eacb2c32923bff51ca9d96872646636a
sha256sums = 47934e9aff119cedcfe7d184078ad60d3d715e07f1ca7cb1715e50b2e0c517e8
sha256sums = b1902c1d44ac546df63cd0224a7d2ef2cb6394ca556512c30c370d387db7bbab
sha256sums = da77ed83459b7d49056f35b9de1dd8b487b3c51234911f43b2fa401a38b6dd4a
diff --git a/PKGBUILD b/PKGBUILD
index 4eaf0f19d72..bd6c0faf5f6 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,7 +2,7 @@
# Contributor: Maxime Gauduin <alucryd@archlinux.org>
pkgname=wingpanel-standalone-git
-pkgver=r351.ce82b43
+pkgver=r355.69a0e08
pkgrel=1
pkgdesc='Stylish top panel that holds indicators and spawns an application launcher (without Gala dependencies)'
arch=('i686' 'x86_64')
@@ -29,8 +29,8 @@ source=('git+https://github.com/elementary/wingpanel.git'
'y-is-broken-cogl.patch'
'autohide.patch')
sha256sums=('SKIP'
- 'edce8ae7810a0782cabb0a7cbe7857c47502ca11595d11a26c1d24234f76a54a'
- 'fa564fa2ce3da51adf4babaaa7dda4a18b1ce900acaf5e19df81d49b593200e3'
+ 'b8bfc357158efb84113e234f9d0efa108cea460a3d160c2db25d966c93412875'
+ 'a1c6e3a9c1553abdf1f676b1861531c3eacb2c32923bff51ca9d96872646636a'
'47934e9aff119cedcfe7d184078ad60d3d715e07f1ca7cb1715e50b2e0c517e8'
'b1902c1d44ac546df63cd0224a7d2ef2cb6394ca556512c30c370d387db7bbab'
'da77ed83459b7d49056f35b9de1dd8b487b3c51234911f43b2fa401a38b6dd4a')
@@ -50,11 +50,10 @@ prepare() {
#patch -Np2 < ../autohide-testing.patch
#Standalone patches
- msg2 "Remove background manager (Gala dependent)"
+ msg2 "Remove Gala dependecies"
+ rm -rf wingpanel-interface
patch -Np2 < ../minus-backgroundmanager.patch
- msg2 "Remove Gala plugin"
patch -Np2 < ../minus-galaplugin.patch
- msg2 "Remove Gala dependency"
patch -Np2 < ../minus-gala.patch
#Cogl can't be found when not using gala's cmake package; wtf?
diff --git a/minus-backgroundmanager.patch b/minus-backgroundmanager.patch
index 9a54da96cfb..7c71dad2d71 100644
--- a/minus-backgroundmanager.patch
+++ b/minus-backgroundmanager.patch
@@ -42,6 +42,16 @@
}
private void add_indicator (Indicator indicator) {
+@@ -93,8 +93,7 @@
+
+ popover_manager.close ();
+
+- var background_manager = Services.BackgroundManager.get_default ();
+- return background_manager.begin_grab_focused_window ((int)event.x_root, (int)event.y_root, (int)event.button, time, state);
++ return Gdk.EVENT_PROPAGATE;
+ }
+
+ public void cycle (bool forward) {
@@ -228,55 +227,4 @@
}
}
@@ -108,211 +118,4 @@
)
vala_precompile (CLIENT_VALA_C ${CMAKE_PROJECT_NAME}
---- src/wingpanel/wingpanel-interface/BackgroundManager.vala 2018-05-13 16:35:27.438070885 +0900
-+++ /dev/null 2018-05-12 19:49:31.706719886 +0900
-@@ -1,204 +0,0 @@
--/*
-- * Copyright (c) 2011-2015 Wingpanel Developers (http://launchpad.net/wingpanel)
-- *
-- * This program is free software; you can redistribute it and/or
-- * modify it under the terms of the GNU General Public
-- * License as published by the Free Software Foundation; either
-- * version 2 of the License, or (at your option) any later version.
-- *
-- * This program is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- * General Public License for more details.
-- *
-- * You should have received a copy of the GNU General Public
-- * License along with this program; if not, write to the
-- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-- * Boston, MA 02110-1301 USA.
-- */
--
--public enum BackgroundState {
-- LIGHT,
-- DARK,
-- MAXIMIZED,
-- TRANSLUCENT_DARK,
-- TRANSLUCENT_LIGHT
--}
--
--public class WingpanelInterface.BackgroundManager : Object {
-- private const int WALLPAPER_TRANSITION_DURATION = 150;
-- private const double ACUTANCE_THRESHOLD = 8;
-- private const double STD_THRESHOLD = 45;
-- private const double LUMINANCE_THRESHOLD = 180;
--
-- public signal void state_changed (BackgroundState state, uint animation_duration);
--
-- public int monitor { private get; construct; }
-- public int panel_height{ private get; construct; }
--
-- private ulong wallpaper_hook_id;
--
-- private Meta.Workspace? current_workspace = null;
--
-- private BackgroundState current_state = BackgroundState.LIGHT;
--
-- private Utils.ColorInformation? bk_color_info = null;
--
-- public BackgroundManager (int monitor, int panel_height) {
-- Object (monitor : monitor, panel_height: panel_height);
--
-- connect_signals ();
-- update_bk_color_info.begin ((obj, res) => {
-- update_bk_color_info.end (res);
-- update_current_workspace ();
-- });
-- }
--
-- ~BackgroundManager () {
-- var signal_id = GLib.Signal.lookup ("changed", Main.wm.background_group.get_type ());
-- GLib.Signal.remove_emission_hook (signal_id, wallpaper_hook_id);
-- }
--
-- private void connect_signals () {
-- Main.screen.workspace_switched.connect (() => {
-- update_current_workspace ();
-- });
--
-- var signal_id = GLib.Signal.lookup ("changed", Main.wm.background_group.get_type ());
--
-- wallpaper_hook_id = GLib.Signal.add_emission_hook (signal_id, 0, (ihint, param_values) => {
-- update_bk_color_info.begin ((obj, res) => {
-- update_bk_color_info.end (res);
-- check_for_state_change (WALLPAPER_TRANSITION_DURATION);
-- });
--
-- return true;
--#if VALA_0_42
-- });
--#else
-- }, null);
--#endif
-- }
--
-- private void update_current_workspace () {
-- var workspace = Main.screen.get_workspace_by_index (Main.screen.get_active_workspace_index ());
--
-- if (workspace == null) {
-- warning ("Cannot get active workspace");
--
-- return;
-- }
--
-- if (current_workspace != null) {
-- current_workspace.window_added.disconnect (on_window_added);
-- current_workspace.window_removed.disconnect (on_window_removed);
-- }
--
-- current_workspace = workspace;
--
-- foreach (Meta.Window window in current_workspace.list_windows ()) {
-- if (window.is_on_primary_monitor ()) {
-- register_window (window);
-- }
-- }
--
-- current_workspace.window_added.connect (on_window_added);
-- current_workspace.window_removed.connect (on_window_removed);
--
-- check_for_state_change (AnimationSettings.get_default ().workspace_switch_duration);
-- }
--
-- private void register_window (Meta.Window window) {
-- window.notify["maximized-vertically"].connect (() => {
-- check_for_state_change (AnimationSettings.get_default ().snap_duration);
-- });
--
-- window.notify["minimized"].connect (() => {
-- check_for_state_change (AnimationSettings.get_default ().minimize_duration);
-- });
-- }
--
-- private void on_window_added (Meta.Window window) {
-- register_window (window);
--
-- check_for_state_change (AnimationSettings.get_default ().snap_duration);
-- }
--
-- private void on_window_removed (Meta.Window window) {
-- check_for_state_change (AnimationSettings.get_default ().snap_duration);
-- }
--
-- public async void update_bk_color_info () {
-- SourceFunc callback = update_bk_color_info.callback;
-- Gdk.Rectangle monitor_geometry;
--
-- Gdk.Screen.get_default ().get_monitor_geometry (monitor, out monitor_geometry);
--
-- Utils.get_background_color_information.begin (Main.wm, monitor, 0, 0, monitor_geometry.width, panel_height, (obj, res) => {
-- try {
-- bk_color_info = Utils.get_background_color_information.end (res);
-- } catch (Error e) {
-- warning (e.message);
-- } finally {
-- callback ();
-- }
-- });
--
-- yield;
-- }
--
-- /**
-- * Check if Wingpanel's background state should change.
-- *
-- * The state is defined as follows:
-- * - If there's a maximized window, the state should be MAXIMIZED;
-- * - If no information about the background could be gathered, it should be TRANSLUCENT;
-- * - If there's too much contrast or sharpness, it should be TRANSLUCENT;
-- * - If the background is too bright, it should be DARK;
-- * - Else it should be LIGHT.
-- */
-- private void check_for_state_change (uint animation_duration) {
-- bool has_maximized_window = false;
--
-- foreach (Meta.Window window in current_workspace.list_windows ()) {
-- if (window.get_monitor () == monitor) {
-- if (!window.minimized && window.maximized_vertically) {
-- has_maximized_window = true;
-- break;
-- }
-- }
-- }
--
-- BackgroundState new_state;
--
-- if (has_maximized_window) {
-- new_state = BackgroundState.MAXIMIZED;
-- } else if (bk_color_info == null) {
-- new_state = BackgroundState.TRANSLUCENT_LIGHT;
-- } else {
-- var luminance_std = Math.sqrt (bk_color_info.luminance_variance);
--
-- bool bg_is_busy = luminance_std > STD_THRESHOLD ||
-- (bk_color_info.mean_luminance < LUMINANCE_THRESHOLD &&
-- bk_color_info.mean_luminance + 1.645 * luminance_std > LUMINANCE_THRESHOLD ) ||
-- bk_color_info.mean_acutance > ACUTANCE_THRESHOLD;
--
-- bool bg_is_dark = bk_color_info.mean_luminance > LUMINANCE_THRESHOLD;
-- bool bg_is_busy_dark = bk_color_info.mean_luminance * 1.25 > LUMINANCE_THRESHOLD;
--
-- if (bg_is_busy && bg_is_busy_dark) {
-- new_state = BackgroundState.TRANSLUCENT_DARK;
-- } else if (bg_is_busy) {
-- new_state = BackgroundState.TRANSLUCENT_LIGHT;
-- } else if (bg_is_dark) {
-- new_state = BackgroundState.DARK;
-- } else {
-- new_state = BackgroundState.LIGHT;
-- }
-- }
--
-- if (new_state != current_state) {
-- state_changed (current_state = new_state, animation_duration);
-- }
-- }
--}
diff --git a/minus-galaplugin.patch b/minus-galaplugin.patch
index a4db0673fbe..fba87d82ffa 100644
--- a/minus-galaplugin.patch
+++ b/minus-galaplugin.patch
@@ -1,252 +1,3 @@
---- src/wingpanel/wingpanel-interface/Main.vala 2017-10-12 18:58:46.125181484 +0900
-+++ /dev/null 2017-10-12 18:36:39.960762875 +0900
-@@ -1,83 +0,0 @@
--/*
-- * Copyright (c) 2011-2015 Wingpanel Developers (http://launchpad.net/wingpanel)
-- *
-- * This program is free software; you can redistribute it and/or
-- * modify it under the terms of the GNU General Public
-- * License as published by the Free Software Foundation; either
-- * version 2 of the License, or (at your option) any later version.
-- *
-- * This program is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- * General Public License for more details.
-- *
-- * You should have received a copy of the GNU General Public
-- * License along with this program; if not, write to the
-- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-- * Boston, MA 02110-1301 USA.
-- */
--
--/*
-- * This plugin adds a dbus-interface to gala that provides additional information
-- * about windows and workspaces for the panel.
-- */
--
--public class WingpanelInterface.Main : Gala.Plugin {
-- private const string DBUS_NAME = "org.pantheon.gala.WingpanelInterface";
-- private const string DBUS_PATH = "/org/pantheon/gala/WingpanelInterface";
--
-- public static Gala.WindowManager wm;
-- public static Meta.Screen screen;
--
-- private DBusConnection? dbus_connection = null;
--
-- public override void initialize (Gala.WindowManager _wm) {
-- if (_wm == null) {
-- return;
-- }
--
-- wm = _wm;
-- screen = wm.get_screen ();
--
-- Bus.own_name (BusType.SESSION,
-- DBUS_NAME,
-- BusNameOwnerFlags.NONE,
-- on_bus_aquired,
-- null,
-- () => warning ("Aquirering \"%s\" failed.", DBUS_NAME));
-- }
--
-- public override void destroy () {
-- try {
-- if (dbus_connection != null) {
-- dbus_connection.close_sync ();
-- }
-- } catch (Error e) {
-- warning ("Closing DBus service failed: %s", e.message);
-- }
-- }
--
-- private void on_bus_aquired (DBusConnection connection) {
-- dbus_connection = connection;
--
-- try {
-- var server = new DBusServer ();
--
-- dbus_connection.register_object (DBUS_PATH, server);
--
-- debug ("DBus service registered.");
-- } catch (Error e) {
-- warning ("Registering DBus service failed: %s", e.message);
-- }
-- }
--}
--
--public Gala.PluginInfo register_plugin () {
-- return {
-- "wingpanel-interface",
-- "Wingpanel Developers",
-- typeof (WingpanelInterface.Main),
-- Gala.PluginFunction.ADDITION,
-- Gala.LoadPriority.IMMEDIATE
-- };
--}
---- src/wingpanel/wingpanel-interface/Settings.vala 2017-10-12 18:58:46.125181484 +0900
-+++ /dev/null 2017-10-12 18:36:39.960762875 +0900
-@@ -1,42 +0,0 @@
--/*
-- * Copyright (c) 2011-2015 Wingpanel Developers (http://launchpad.net/wingpanel)
-- *
-- * This program is free software; you can redistribute it and/or
-- * modify it under the terms of the GNU General Public
-- * License as published by the Free Software Foundation; either
-- * version 2 of the License, or (at your option) any later version.
-- *
-- * This program is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- * General Public License for more details.
-- *
-- * You should have received a copy of the GNU General Public
-- * License along with this program; if not, write to the
-- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-- * Boston, MA 02110-1301 USA.
-- */
--
--public class WingpanelInterface.AnimationSettings : Granite.Services.Settings {
-- public bool enable_animations { get; set; }
-- public int open_duration { get; set; }
-- public int snap_duration { get; set; }
-- public int close_duration { get; set; }
-- public int minimize_duration { get; set; }
-- public int workspace_switch_duration { get; set; }
-- public int menu_duration { get; set; }
--
-- static AnimationSettings? instance = null;
--
-- private AnimationSettings () {
-- base ("org.pantheon.desktop.gala.animations");
-- }
--
-- public static unowned AnimationSettings get_default () {
-- if (instance == null) {
-- instance = new AnimationSettings ();
-- }
--
-- return instance;
-- }
--}
---- src/wingpanel/wingpanel-interface/FocusManager.vala 2017-10-12 18:58:46.125181484 +0900
-+++ /dev/null 2017-10-12 18:36:39.960762875 +0900
-@@ -1,72 +0,0 @@
--/*
-- * Copyright (c) 2011-2015 Wingpanel Developers (http://launchpad.net/wingpanel)
-- *
-- * This program is free software; you can redistribute it and/or
-- * modify it under the terms of the GNU General Public
-- * License as published by the Free Software Foundation; either
-- * version 2 of the License, or (at your option) any later version.
-- *
-- * This program is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- * General Public License for more details.
-- *
-- * You should have received a copy of the GNU General Public
-- * License along with this program; if not, write to the
-- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-- * Boston, MA 02110-1301 USA.
-- */
--
--public class WingpanelInterface.FocusManager : Object {
-- private static FocusManager? instance = null;
--
-- private Meta.Workspace? current_workspace = null;
-- private Meta.Window? last_focused_window = null;
--
-- public FocusManager () {
-- Main.screen.workspace_switched.connect (() => {
-- update_current_workspace ();
-- });
--
-- update_current_workspace ();
-- }
--
-- public void remember_focused_window () {
-- var windows = current_workspace.list_windows ();
--
-- foreach (Meta.Window window in windows) {
-- if (window.has_focus ()) {
-- last_focused_window = window;
--
-- return;
-- }
-- }
-- }
--
-- public void restore_focused_window () {
-- if (last_focused_window != null) {
-- var display = Main.screen.get_display ();
-- last_focused_window.focus (display.get_current_time ());
-- }
-- }
--
-- private void update_current_workspace () {
-- var workspace = Main.screen.get_workspace_by_index (Main.screen.get_active_workspace_index ());
--
-- if (workspace == null) {
-- warning ("Cannot get active workspace");
--
-- return;
-- }
--
-- current_workspace = workspace;
-- }
--
-- public static FocusManager get_default () {
-- if (instance == null) {
-- instance = new FocusManager ();
-- }
--
-- return instance;
-- }
--}
---- src/wingpanel/wingpanel-interface/DBusServer.vala 2017-10-13 03:00:24.840092343 +0900
-+++ /dev/null 2017-10-13 01:49:26.502721048 +0900
-@@ -1,40 +0,0 @@
--/*
-- * Copyright (c) 2011-2015 Wingpanel Developers (http://launchpad.net/wingpanel)
-- *
-- * This program is free software; you can redistribute it and/or
-- * modify it under the terms of the GNU General Public
-- * License as published by the Free Software Foundation; either
-- * version 2 of the License, or (at your option) any later version.
-- *
-- * This program is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- * General Public License for more details.
-- *
-- * You should have received a copy of the GNU General Public
-- * License along with this program; if not, write to the
-- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-- * Boston, MA 02110-1301 USA.
-- */
--
--[DBus (name = "org.pantheon.gala.WingpanelInterface")]
--public class WingpanelInterface.DBusServer : Object {
-- private BackgroundManager background_manager;
--
-- public signal void state_changed (BackgroundState state, uint animation_duration);
--
-- public void initialize (int monitor, int panel_height) {
-- background_manager = new BackgroundManager (monitor, panel_height);
-- background_manager.state_changed.connect ((state, animation_duration) => {
-- state_changed (state, animation_duration);
-- });
-- }
--
-- public void remember_focused_window () {
-- FocusManager.get_default ().remember_focused_window ();
-- }
--
-- public void restore_focused_window () {
-- FocusManager.get_default ().restore_focused_window ();
-- }
--}
--- src/wingpanel/CMakeLists.txt 2017-10-13 03:25:28.007664080 +0900
+++ src/wingpanel/CMakeLists.txt.new 2017-10-13 03:27:00.135900068 +0900
@@ -121,8 +121,6 @@
@@ -258,301 +9,3 @@
if (BUILD_SAMPLE)
add_subdirectory (sample)
endif ()
---- src/wingpanel/wingpanel-interface/CMakeLists.txt 2018-03-05 15:53:08.967254520 +0900
-+++ /dev/null 2018-03-05 14:42:26.994151215 +0900
-@@ -1,90 +0,0 @@
--find_package (PkgConfig)
--
--pkg_check_modules (PLUGIN REQUIRED gala granite)
--
--add_definitions (${PLUGIN_CFLAGS})
--link_directories (${PLUGIN_LIBRARY_DIRS})
--set (WINGPANELINTERFACE "wingpanel-interface")
--
--find_package (Vala REQUIRED)
--include (ValaVersion)
--ensure_vala_version ("0.12.0" MINIMUM)
--
--# We need to know which version of the Mutter API is in use
--pkg_check_modules(MUTTER320 QUIET libmutter>=3.19)
--pkg_check_modules(MUTTER322 QUIET libmutter>=3.21)
--pkg_check_modules(MUTTER324 QUIET libmutter-0>=3.23.90)
--pkg_check_modules(MUTTER326 QUIET libmutter-1>=3.25.90)
--pkg_check_modules(MUTTER328 QUIET libmutter-2>=3.27.91)
--
--set (EXTRA_VALA_FLAGS "")
--set (EXTRA_MUTTER_PKS cogl-1.0 clutter-1.0 libmutter)
--set (EXTRA_MUTTER_PACKAGES cogl-1.0 clutter-1.0 libmutter)
--if (MUTTER320_FOUND)
-- set (EXTRA_VALA_FLAGS ${EXTRA_VALA_FLAGS} --define HAS_MUTTER320)
--endif ()
--
--if (MUTTER322_FOUND)
-- set (EXTRA_VALA_FLAGS ${EXTRA_VALA_FLAGS} --define HAS_MUTTER322)
-- set (EXTRA_MUTTER_PKS mutter-cogl-1.0 mutter-cogl-pango-1.0 mutter-cogl-path-1.0 mutter-clutter-1.0 libmutter)
-- set (EXTRA_MUTTER_PACKAGES mutter-cogl-1.0 mutter-clutter-1.0)
--endif ()
--
--if (MUTTER324_FOUND)
-- set (EXTRA_VALA_FLAGS ${EXTRA_VALA_FLAGS} --define HAS_MUTTER320 --define HAS_MUTTER322 --define HAS_MUTTER324)
-- set (EXTRA_MUTTER_PKS mutter-cogl-0 mutter-cogl-pango-0 mutter-cogl-path-0 mutter-clutter-0 libmutter-0)
-- set (EXTRA_MUTTER_PACKAGES mutter-cogl-0 mutter-clutter-0)
--endif ()
--
--if (MUTTER326_FOUND)
-- set (EXTRA_VALA_FLAGS ${EXTRA_VALA_FLAGS} --define HAS_MUTTER320 --define HAS_MUTTER322 --define HAS_MUTTER324 --define HAS_MUTTER326)
-- set (EXTRA_MUTTER_PKS mutter-cogl-1 mutter-cogl-pango-1 mutter-cogl-path-1 mutter-clutter-1 libmutter-1)
-- set (EXTRA_MUTTER_PACKAGES mutter-cogl-1 mutter-clutter-1)
--endif ()
--
--if (MUTTER328_FOUND)
-- set (EXTRA_VALA_FLAGS ${EXTRA_VALA_FLAGS} --define HAS_MUTTER320 --define HAS_MUTTER322 --define HAS_MUTTER324 --define HAS_MUTTER326 --define HAS_MUTTER328)
-- set (EXTRA_MUTTER_PKS mutter-cogl-2 mutter-cogl-pango-2 mutter-cogl-path-2 mutter-clutter-2 libmutter-2)
-- set (EXTRA_MUTTER_PACKAGES mutter-cogl-2 mutter-clutter-2)
--endif ()
--
--pkg_check_modules (PLUGIN_MUTTER REQUIRED ${EXTRA_MUTTER_PKS})
--
--include (ValaPrecompile)
--vala_precompile (VALA_C ${WINGPANELINTERFACE}
-- Main.vala
-- DBusServer.vala
-- BackgroundManager.vala
-- FocusManager.vala
-- Settings.vala
-- Utils.vala
--PACKAGES
-- gala
-- granite
-- cogl-fixes
-- ${EXTRA_MUTTER_PACKAGES}
--OPTIONS
-- --thread
-- --vapidir=${CMAKE_SOURCE_DIR}/vapi
-- ${EXTRA_VALA_FLAGS}
--)
--
--add_library (${WINGPANELINTERFACE} MODULE ${VALA_C})
--target_link_libraries(${WINGPANELINTERFACE} ${PLUGIN_LIBRARIES} ${PLUGIN_MUTTER_LIBRARIES} m)
--
--# Add -rpath ldflag if libgala is using mutter >= 3.21 to pick up libmutter-*.so
--if (MUTTER328_FOUND)
-- _pkgconfig_invoke("libmutter-2" MUTTER TYPELIB_DIR "" "--variable=typelibdir")
-- set_target_properties(${WINGPANELINTERFACE} PROPERTIES LINK_FLAGS -Wl,-rpath,${MUTTER_TYPELIB_DIR})
--elseif (MUTTER326_FOUND)
-- _pkgconfig_invoke("libmutter-1" MUTTER TYPELIB_DIR "" "--variable=typelibdir")
-- set_target_properties(${WINGPANELINTERFACE} PROPERTIES LINK_FLAGS -Wl,-rpath,${MUTTER_TYPELIB_DIR})
--elseif (MUTTER324_FOUND)
-- _pkgconfig_invoke("libmutter-0" MUTTER TYPELIB_DIR "" "--variable=typelibdir")
-- set_target_properties(${WINGPANELINTERFACE} PROPERTIES LINK_FLAGS -Wl,-rpath,${MUTTER_TYPELIB_DIR})
--elseif (MUTTER322_FOUND)
-- _pkgconfig_invoke("libmutter" MUTTER TYPELIB_DIR "" "--variable=typelibdir")
-- set_target_properties(${WINGPANELINTERFACE} PROPERTIES LINK_FLAGS -Wl,-rpath,${MUTTER_TYPELIB_DIR})
--endif ()
--
--install (TARGETS ${WINGPANELINTERFACE} DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/gala/plugins)
---- src/wingpanel/wingpanel-interface/Utils.vala 2018-05-13 16:35:27.438070885 +0900
-+++ /dev/null 2018-05-12 19:49:31.706719886 +0900
-@@ -1,202 +0,0 @@
--/*
-- * Copyright (c) 2011-2015 Wingpanel Developers (http://launchpad.net/wingpanel)
-- *
-- * This program is free software; you can redistribute it and/or
-- * modify it under the terms of the GNU General Public
-- * License as published by the Free Software Foundation; either
-- * version 2 of the License, or (at your option) any later version.
-- *
-- * This program is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- * General Public License for more details.
-- *
-- * You should have received a copy of the GNU General Public
-- * License along with this program; if not, write to the
-- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-- * Boston, MA 02110-1301 USA.
-- */
--
--/*
-- * The method for calculating the background information and the classes that are
-- * related to it are copied from Gala.DBus.
-- */
--
--namespace WingpanelInterface.Utils {
-- private const double SATURATION_WEIGHT = 1.5;
-- private const double WEIGHT_THRESHOLD = 1.0;
--
-- private class DummyOffscreenEffect : Clutter.OffscreenEffect {
-- public signal void done_painting ();
--
-- public override void post_paint () {
-- base.post_paint ();
-- Idle.add (() => {
-- done_painting ();
-- return false;
-- });
-- }
-- }
--
-- public struct ColorInformation {
-- double average_red;
-- double average_green;
-- double average_blue;
-- double mean_luminance;
-- double luminance_variance;
-- double mean_acutance;
-- }
--
-- public async ColorInformation get_background_color_information (Gala.WindowManager wm, int monitor,
-- int reference_x, int reference_y, int reference_width, int reference_height) throws DBusError {
-- var background = wm.background_group.get_child_at_index (monitor);
--
-- if (background == null) {
-- throw new DBusError.INVALID_ARGS ("Invalid monitor requested: %i".printf (monitor));
-- }
--
-- var effect = new DummyOffscreenEffect ();
-- background.add_effect (effect);
--
-- var tex_width = (int)background.width;
-- var tex_height = (int)background.height;
--
-- int x_start = reference_x;
-- int y_start = reference_y;
-- int width = int.min (tex_width - reference_x, reference_width);
-- int height = int.min (tex_height - reference_y, reference_height);
--
-- if (x_start > tex_width || x_start > tex_height || width <= 0 || height <= 0) {
-- throw new DBusError.INVALID_ARGS ("Invalid rectangle specified: %i, %i, %i, %i".printf (x_start, y_start, width, height));
-- }
--
-- double mean_acutance = 0, variance = 0, mean = 0, rTotal = 0, gTotal = 0, bTotal = 0;
-- ulong paint_signal_handler = 0;
--
-- paint_signal_handler = effect.done_painting.connect (() => {
-- SignalHandler.disconnect (effect, paint_signal_handler);
-- background.remove_effect (effect);
--
-- var texture = (Cogl.Texture)effect.get_texture ();
-- var pixels = new uint8[texture.get_width () * texture.get_height () * 4];
-- var pixel_lums = new double[texture.get_width () * texture.get_height ()];
--
-- CoglFixes.texture_get_data (texture, Cogl.PixelFormat.BGRA_8888_PRE, 0, pixels);
--
-- int size = width * height;
--
-- double mean_squares = 0;
-- double pixel = 0;
--
-- double max, min, score, delta, scoreTotal = 0, rTotal2 = 0, gTotal2 = 0, bTotal2 = 0;
--
-- /*
-- * code to calculate weighted average color is copied from
-- * plank's lib/Drawing/DrawingService.vala average_color()
-- * http://bazaar.launchpad.net/~docky-core/plank/trunk/view/head:/lib/Drawing/DrawingService.vala
-- */
-- for (int y = y_start; y < height; y++) {
-- for (int x = x_start; x < width; x++) {
-- int i = y * width * 4 + x * 4;
--
-- uint8 r = pixels[i];
-- uint8 g = pixels[i + 1];
-- uint8 b = pixels[i + 2];
--
-- pixel = (0.3 * r + 0.59 * g + 0.11 * b) ;
--
-- pixel_lums[y * width + x] = pixel;
--
-- min = uint8.min (r, uint8.min (g, b));
-- max = uint8.max (r, uint8.max (g, b));
--
-- delta = max - min;
--
-- /* prefer colored pixels over shades of grey */
-- score = SATURATION_WEIGHT * (delta == 0 ? 0.0 : delta / max);
--
-- rTotal += score * r;
-- gTotal += score * g;
-- bTotal += score * b;
-- scoreTotal += score;
--
-- rTotal += r;
-- gTotal += g;
-- bTotal += b;
--
-- mean += pixel;
-- mean_squares += pixel * pixel;
-- }
-- }
--
-- for (int y = y_start + 1; y < height - 1; y++) {
-- for (int x = x_start + 1; x < width - 1; x++) {
-- var acutance =
-- (pixel_lums[y * width + x] * 4) -
-- (
-- pixel_lums[y * width + x - 1] +
-- pixel_lums[y * width + x + 1] +
-- pixel_lums[(y - 1) * width + x] +
-- pixel_lums[(y + 1) * width + x]
-- );
--
-- mean_acutance += acutance > 0 ? acutance : -acutance;
-- }
-- }
--
-- scoreTotal /= size;
-- bTotal /= size;
-- gTotal /= size;
-- rTotal /= size;
--
-- if (scoreTotal > 0.0) {
-- bTotal /= scoreTotal;
-- gTotal /= scoreTotal;
-- rTotal /= scoreTotal;
-- }
--
-- bTotal2 /= size * uint8.MAX;
-- gTotal2 /= size * uint8.MAX;
-- rTotal2 /= size * uint8.MAX;
--
-- /*
-- * combine weighted and not weighted sum depending on the average "saturation"
-- * if saturation isn't reasonable enough
-- * s = 0.0 -> f = 0.0 ; s = WEIGHT_THRESHOLD -> f = 1.0
-- */
-- if (scoreTotal <= WEIGHT_THRESHOLD) {
-- var f = 1.0 / WEIGHT_THRESHOLD * scoreTotal;
-- var rf = 1.0 - f;
--
-- bTotal = bTotal * f + bTotal2 * rf;
-- gTotal = gTotal * f + gTotal2 * rf;
-- rTotal = rTotal * f + rTotal2 * rf;
-- }
--
-- /* there shouldn't be values larger then 1.0 */
-- var max_val = double.max (rTotal, double.max (gTotal, bTotal));
--
-- if (max_val > 1.0) {
-- bTotal /= max_val;
-- gTotal /= max_val;
-- rTotal /= max_val;
-- }
--
-- mean /= size;
-- mean_squares = mean_squares / size;
--
-- variance = (mean_squares - (mean * mean));
--
-- mean_acutance /= (width - 2) * (height - 2);
--
-- get_background_color_information.callback ();
-- });
--
-- background.queue_redraw ();
--
-- yield;
--
-- return { rTotal, gTotal, bTotal, mean, variance, mean_acutance };
-- }
--
--}