diff options
18 files changed, 2596 insertions, 0 deletions
diff --git a/mate-base/mate-session-manager/Manifest b/mate-base/mate-session-manager/Manifest new file mode 100644 index 00000000..6cf562c9 --- /dev/null +++ b/mate-base/mate-session-manager/Manifest @@ -0,0 +1 @@ +DIST mate-session-manager-1.8.1.tar.xz 524204 SHA256 2f85a714704bc475d08809be6ecf24a5d94d2e2d0ea5ac704d67557c349d7b8c SHA512 1b09a471db710193a643ec90c9b153468d9a303957b9c4da4e30cf470aa5f582b6992f5e0ed69129943aa44f7c4e372e2a8554fc6020627817a3c49d656ca5b5 WHIRLPOOL 8c771ac713da92c2ae8bccc173a9cba4fc5bb16a943e588c679624e3e945555f2c37511426e666f38440947ec37139452ee230d07bc3a414a65629c04bfd31a6 diff --git a/mate-base/mate-session-manager/files/10-user-dirs-update-mate b/mate-base/mate-session-manager/files/10-user-dirs-update-mate new file mode 100755 index 00000000..35973aae --- /dev/null +++ b/mate-base/mate-session-manager/files/10-user-dirs-update-mate @@ -0,0 +1,10 @@ +#!/bin/sh + +# Create various XDG directories, and write ~/.config/user-dirs.dirs, etc. +# That file is read by glib to get XDG_PICTURES_DIR, etc + +if [ "$DESKTOP_SESSION" = "mate" ]; then + if type xdg-user-dirs-update >/dev/null 2>&1; then + xdg-user-dirs-update + fi +fi diff --git a/mate-base/mate-session-manager/files/15-xdg-data-mate b/mate-base/mate-session-manager/files/15-xdg-data-mate new file mode 100644 index 00000000..df360cf8 --- /dev/null +++ b/mate-base/mate-session-manager/files/15-xdg-data-mate @@ -0,0 +1,9 @@ +#!/bin/sh + +if [ "$DESKTOP_SESSION" = "mate" ]; then + if [ -z "$XDG_DATA_DIRS" ]; then + export XDG_DATA_DIRS=/usr/share/mate:/usr/local/share/:/usr/share/ + else + export XDG_DATA_DIRS=/usr/share/mate:"$XDG_DATA_DIRS" + fi +fi diff --git a/mate-base/mate-session-manager/files/MATE b/mate-base/mate-session-manager/files/MATE new file mode 100644 index 00000000..baa154bd --- /dev/null +++ b/mate-base/mate-session-manager/files/MATE @@ -0,0 +1,109 @@ +#!/bin/sh +# +# This file has bitrotted badly. Someone needs to clean this up. +# + +if [ -f /etc/xdg/menus/mate-applications.menu ] ; then + export XDG_MENU_PREFIX=mate- +fi + +for errfile in "$HOME/.materc-errors" "${TMPDIR-/tmp}/materc-$USER/tmp/materc-$USER" +do + if ( cp /dev/null "$errfile" 2> /dev/null ) + then + chmod 600 "$errfile" + exec > "$errfile" 2>&1 + break + fi +done +# +# Distributors: +# You should modify the paths here to fit your distro +# If you need to do so, send me (jirka@5z.com) a patch +# and I'll try to make the script detect the distro stuff +# + +userresources=$HOME/.Xresources +usermodmap=$HOME/.Xmodmap +userxkbmap=$HOME/.Xkbmap + +sysresources=/etc/X11/Xresources +sysmodmap=/etc/X11/Xmodmap +sysxkbmap=/etc/X11/Xkbmap + +rh6sysresources=/etc/X11/xinit/Xresources +rh6sysmodmap=/etc/X11/xinit/Xmodmap + +if [ -x "$HOME/.materc" ]; then + command="$HOME/.materc" +elif [ -x /etc/X11/gdm/materc ]; then + command="/etc/X11/gdm/materc" +else + # as fallback in case the config is screwed + command=`which mate-session` +fi + +# merge in defaults +if [ -f "$rh6sysresources" ]; then + xrdb -merge "$rh6sysresources" +fi + +if [ -f "$sysresources" ]; then + xrdb -merge "$sysresources" +fi + +if [ -f "$userresources" ]; then + xrdb -merge "$userresources" +fi + +# merge in keymaps +if [ -f "$sysxkbmap" ]; then + setxkbmap `cat "$sysxkbmap"` + XKB_IN_USE=yes +fi + +if [ -f "$userxkbmap" ]; then + setxkbmap `cat "$userxkbmap"` + XKB_IN_USE=yes +fi + +# +# Eeek, this seems like too much magic here +# +if [ -z "$XKB_IN_USE" ] && [ ! -L /etc/X11/X ]; then + if grep '^exec.*/Xsun' /etc/X11/X > /dev/null 2>&1 && [ -f /etc/X11/XF86Config ]; then + xkbsymbols=`sed -n -e 's/^[ ]*XkbSymbols[ ]*"\(.*\)".*$/\1/p' /etc/X11/XF86Config` + if [ -n "$xkbsymbols" ]; then + setxkbmap -symbols "$xkbsymbols" + XKB_IN_USE=yes + fi + fi +fi + +# xkb and xmodmap don't play nice together +if [ -z "$XKB_IN_USE" ]; then + if [ -f "$rh6sysmodmap" ]; then + xmodmap "$rh6sysmodmap" + fi + + if [ -f "$sysmodmap" ]; then + xmodmap "$sysmodmap" + fi + + if [ -f "$usermodmap" ]; then + xmodmap "$usermodmap" + fi +fi + +unset XKB_IN_USE + +# run all system xinitrc shell scripts. +if [ -d /etc/X11/xinit/xinitrc.d ]; then + for i in /etc/X11/xinit/xinitrc.d/* ; do + if [ -x "$i" ]; then + . "$i" + fi + done +fi + +exec $command diff --git a/mate-base/mate-session-manager/files/defaults.list b/mate-base/mate-session-manager/files/defaults.list new file mode 100644 index 00000000..0d6d6bf9 --- /dev/null +++ b/mate-base/mate-session-manager/files/defaults.list @@ -0,0 +1,336 @@ +[Default Applications] +application/rtf=abiword.desktop +application/x-abiword=abiword.desktop +text/abiword=abiword.desktop +text/richtext=abiword.desktop +text/rtf=abiword.desktop +text/x-abiword=abiword.desktop +text/x-xml-abiword=abiword.desktop +x-content/blank-bd=brasero-caja.desktop +x-content/blank-dvd=brasero-caja.desktop +x-content/blank-cd=brasero-caja.desktop +x-content/blank-hddvd=brasero-caja.desktop +application/x-dia-diagram=dia.desktop +image/bmp=eom.desktop +image/gif=eom.desktop +image/jpeg=eom.desktop +image/jpg=eom.desktop +image/pjpeg=eom.desktop +image/png=eom.desktop +image/svg+xml=eom.desktop +image/svg+xml-compressed=eom.desktop +image/x-bmp=eom.desktop +image/x-gray=eom.desktop +image/x-icb=eom.desktop +image/x-ico=eom.desktop +image/x-pcx=eom.desktop +image/x-png=eom.desktop +image/x-portable-anymap=eom.desktop +image/x-portable-bitmap=eom.desktop +image/x-portable-graymap=eom.desktop +image/x-portable-pixmap=eom.desktop +image/x-xbitmap=eom.desktop +image/x-xpixmap=eom.desktop +image/vnd.wap.wbmp=eom.desktop +image/g3fax=gimp.desktop +image/x-compressed-xcf=gimp.desktop +image/x-fits=gimp.desktop +image/x-icon=gimp.desktop +image/x-psd=gimp.desktop +image/x-sgi=gimp.desktop +image/x-sun-raster=gimp.desktop +image/x-tga=gimp.desktop +image/x-xcf=gimp.desktop +image/x-xwindowdump=gimp.desktop +application/xhtml+xml=firefox.desktop;firefox-3.6.desktop;epiphany.desktop +text/html=firefox.desktop;firefox-3.6.desktop;epiphany.desktop +application/pdf=atril.desktop +application/x-bzpdf=atril.desktop +application/x-gzpdf=atril.desktop +application/postscript=atril.desktop +application/x-bzpostscript=atril.desktop +application/x-gzpostscript=atril.desktop +image/x-eps=atril.desktop +image/x-bzeps=atril.desktop +image/x-gzeps=atril.desktop +application/x-dvi=atril.desktop +application/x-bzdvi=atril.desktop +application/x-gzdvi=atril.desktop +image/vnd.djvu=atril.desktop +image/tiff=atril.desktop +application/x-cbr=atril.desktop +application/x-cbz=atril.desktop +application/x-cb7=atril.desktop +application/x-7z-compressed=engrampa.desktop +application/x-7z-compressed-tar=engrampa.desktop +application/x-ace=engrampa.desktop +application/x-alz=engrampa.desktop +application/x-ar=engrampa.desktop +application/x-arj=engrampa.desktop +application/x-bzip=engrampa.desktop +application/x-bzip-compressed-tar=engrampa.desktop +application/x-bzip1=engrampa.desktop +application/x-bzip1-compressed-tar=engrampa.desktop +application/x-cabinet=engrampa.desktop +application/x-cd-image=engrampa.desktop +application/x-compress=engrampa.desktop +application/x-compressed-tar=engrampa.desktop +application/x-cpio=engrampa.desktop +application/x-deb=engrampa.desktop +application/x-ear=engrampa.desktop +application/x-gtar=engrampa.desktop +application/x-gzip=engrampa.desktop +application/x-java-archive=engrampa.desktop +application/x-lha=engrampa.desktop +application/x-lhz=engrampa.desktop +application/x-lzip=engrampa.desktop +application/x-lzip-compressed-tar=engrampa.desktop +application/x-lzma=engrampa.desktop +application/x-lzma-compressed-tar=engrampa.desktop +application/x-lzop=engrampa.desktop +application/x-lzop-compressed-tar=engrampa.desktop +application/x-rar=engrampa.desktop +application/x-rar-compressed=engrampa.desktop +application/x-rpm=engrampa.desktop +application/x-rzip=engrampa.desktop +application/x-tar=engrampa.desktop +application/x-tarz=engrampa.desktop +application/x-stuffit=engrampa.desktop +application/x-war=engrampa.desktop +application/x-xz=engrampa.desktop +application/x-xz-compressed-tar=engrampa.desktop +application/x-zip=engrampa.desktop +application/x-zip-compressed=engrampa.desktop +application/x-zoo=engrampa.desktop +application/zip=engrampa.desktop +multipart/x-zip=engrampa.desktop +text/plain=pluma.desktop +text/css=pluma.desktop +text/javascript=pluma.desktop +text/mathml=pluma.desktop +text/x-csrc=pluma.desktop +text/x-chdr=pluma.desktop +text/x-dtd=pluma.desktop +text/x-java=pluma.desktop +text/x-javascript=pluma.desktop +text/x-patch=pluma.desktop +text/x-perl=pluma.destkop +text/x-php=pluma.destkop +text/x-python=pluma.destkop +text/x-sql=pluma.desktop +text/xml=pluma.desktop +application/javascript=pluma.destkop +application/x-cgi=pluma.desktop +application/x-javascript=pluma.desktop +application/x-perl=pluma.desktop +application/x-php=pluma.desktop +application/x-python=pluma.desktop +application/xml=pluma.desktop +application/xml-dtd=pluma.desktop +application/x-font-ttf=mate-font-viewer.desktop +application/x-font-pcf=mate-font-viewer.desktop +application/x-font-type1=mate-font-viewer.desktop +application/x-font-otf=mate-font-viewer.desktop +application/csv=gnumeric.desktop +application/excel=gnumeric.desktop +application/msexcel=gnumeric.desktop +application/tab-separated-values=gnumeric.desktop +application/vnd.lotus-1-2-3=gnumeric.desktop +application/vnd.ms-excel=gnumeric.desktop +application/x-123=gnumeric.desktop +application/x-applix-spreadsheet=gnumeric.desktop +application/x-dbase=gnumeric.desktop +application/x-dbf=gnumeric.desktop +application/x-dos_ms_excel=gnumeric.desktop +application/x-excel=gnumeric.desktop +application/x-gnumeric=gnumeric.desktop +application/x-mps=gnumeric.desktop +application/x-ms-excel=gnumeric.desktop +application/x-msexcel=gnumeric.desktop +application/x-oleo=gnumeric.desktop +application/x-planperfect=gnumeric.desktop +application/x-quattropro=gnumeric.desktop +application/x-sc=gnumeric.desktop +application/x-sylk=gnumeric.desktop +application/x-xbase=gnumeric.desktop +application/x-xls=gnumeric.desktop +application/xls=gnumeric.desktop +text/comma-separated-values=gnumeric.desktop +text/csv=gnumeric.desktop +text/spreadsheet=gnumeric.desktop +text/tab-separated-values=gnumeric.desktop +text/x-comma-separated-values=gnumeric.desktop +text/x-csv=gnumeric.desktop +zz-application/zz-winassoc-xls=gnumeric.desktop +x-content/software=caja-autorun-software.desktop +x-directory/gnome-default-handler=caja-folder-handler.desktop +x-directory/normal=caja-folder-handler.desktop +inode/directory=caja-folder-handler.desktop +application/x-gnome-saved-search=caja-folder-handler.desktop +application/vnd.oasis.opendocument.spreadsheet=libreoffice-calc.desktop;openoffice.org-calc.desktop +application/vnd.oasis.opendocument.spreadsheet-template=libreoffice-calc.desktop;openoffice.org-calc.desktop +application/vnd.sun.xml.calc=libreoffice-calc.desktop;openoffice.org-calc.desktop +application/vnd.sun.xml.calc.template=libreoffice-calc.desktop;openoffice.org-calc.desktop +application/vnd.stardivision.calc=libreoffice-calc.desktop;openoffice.org-calc.desktop +application/vnd.stardivision.chart=libreoffice-calc.desktop;openoffice.org-calc.desktop +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=libreoffice-calc.desktop;openoffice.org-calc.desktop +application/vnd.ms-excel.sheet.macroenabled.12=libreoffice-calc.desktop;openoffice.org-calc.desktop +application/vnd.openxmlformats-officedocument.spreadsheetml.template=libreoffice-calc.desktop;openoffice.org-calc.desktop +application/vnd.ms-excel.template.macroenabled.12=libreoffice-calc.desktop;openoffice.org-calc.desktop +application/vnd.ms-excel.sheet.binary.macroenabled.12=libreoffice-calc.desktop;openoffice.org-calc.desktop +application/vnd.oasis.opendocument.graphics=libreoffice-draw.desktop;openoffice.org-draw.desktop +application/vnd.oasis.opendocument.graphics-template=libreoffice-draw.desktop;openoffice.org-draw.desktop +application/vnd.sun.xml.draw=libreoffice-draw.desktop;openoffice.org-draw.desktop +application/vnd.sun.xml.draw.template=libreoffice-draw.desktop;openoffice.org-draw.desktop +application/vnd.stardivision.draw=libreoffice-draw.desktop;openoffice.org-draw.desktop +application/vnd.oasis.opendocument.presentation=libreoffice-impress.desktop;openoffice.org-impress.desktop +application/vnd.oasis.opendocument.presentation-template=libreoffice-impress.desktop;openoffice.org-impress.desktop +application/vnd.sun.xml.impress=libreoffice-impress.desktop;openoffice.org-impress.desktop +application/vnd.sun.xml.impress.template=libreoffice-impress.desktop;openoffice.org-impress.desktop +application/vnd.stardivision.impress=libreoffice-impress.desktop;openoffice.org-impress.desktop +application/mspowerpoint=libreoffice-impress.desktop;openoffice.org-impress.desktop +application/vnd.ms-powerpoint=libreoffice-impress.desktop;openoffice.org-impress.desktop +application/vnd.openxmlformats-officedocument.presentationml.presentation=libreoffice-impress.desktop;openoffice.org-impress.desktop +application/vnd.ms-powerpoint.presentation.macroenabled.12=libreoffice-impress.desktop;openoffice.org-impress.desktop +application/vnd.openxmlformats-officedocument.presentationml.template=libreoffice-impress.desktop;openoffice.org-impress.desktop +application/vnd.ms-powerpoint.template.macroenabled.12=libreoffice-impress.desktop;openoffice.org-impress.desktop +application/vnd.oasis.opendocument.formula=libreoffice-math.desktop;openoffice.org-math.desktop +application/vnd.sun.xml.math=libreoffice-math.desktop;openoffice.org-math.desktop +application/vnd.stardivision.math=libreoffice-math.desktop;openoffice.org-math.desktop +application/vnd.oasis.opendocument.text=libreoffice-writer.desktop;openoffice.org-writer.desktop +application/vnd.oasis.opendocument.text-template=libreoffice-writer.desktop;openoffice.org-writer.desktop +application/vnd.oasis.opendocument.text-web=libreoffice-writer.desktop;openoffice.org-writer.desktop +application/vnd.oasis.opendocument.text-master=libreoffice-writer.desktop;openoffice.org-writer.desktop +application/vnd.sun.xml.writer=libreoffice-writer.desktop;openoffice.org-writer.desktop +application/vnd.sun.xml.writer.template=libreoffice-writer.desktop;openoffice.org-writer.desktop +application/vnd.sun.xml.writer.global=libreoffice-writer.desktop;openoffice.org-writer.desktop +application/vnd.stardivision.writer=libreoffice-writer.desktop;openoffice.org-writer.desktop +application/msword=libreoffice-writer.desktop;openoffice.org-writer.desktop +application/vnd.ms-word=libreoffice-writer.desktop;openoffice.org-writer.desktop +application/x-doc=libreoffice-writer.desktop;openoffice.org-writer.desktop +application/vnd.wordperfect=libreoffice-writer.desktop;openoffice.org-writer.desktop +application/wordperfect=libreoffice-writer.desktop;openoffice.org-writer.desktop +application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop;openoffice.org-writer.desktop +application/vnd.ms-word.document.macroenabled.12=libreoffice-writer.desktop;openoffice.org-writer.desktop +application/vnd.openxmlformats-officedocument.wordprocessingml.template=libreoffice-writer.desktop;openoffice.org-writer.desktop +application/vnd.ms-word.template.macroenabled.12=libreoffice-writer.desktop;openoffice.org-writer.desktop +x-content/audio-player=rhythmbox.desktop +x-content/audio-cdda=sound-juicer.desktop +application/x-shockwave-flash=swfdec-player.desktop +application/futuresplash=swfdec-player.desktop +application/mxf=vlc.desktop +application/ogg=vlc.desktop +application/ram=vlc.desktop +application/sdp=vlc.desktop +application/smil=vlc.desktop +application/smil+xml=vlc.desktop +application/vnd.ms-wpl=vlc.desktop +application/vnd.rn-realmedia=vlc.desktop +application/x-extension-m4a=vlc.desktop +application/x-extension-mp4=vlc.desktop +application/x-flac=vlc.desktop +application/x-flash-video=vlc.desktop +application/x-lyx=lyx.desktop +application/x-matroska=vlc.desktop +application/x-netshow-channel=vlc.desktop +application/x-ogg=vlc.desktop +application/x-quicktime-media-link=vlc.desktop +application/x-quicktimeplayer=vlc.desktop +application/x-shorten=vlc.desktop +application/x-smil=vlc.desktop +application/xspf+xml=vlc.desktop +audio/3gpp=vlc.desktop +audio/ac3=vlc.desktop +audio/AMR=vlc.desktop +audio/AMR-WB=vlc.desktop +audio/basic=vlc.desktop +audio/midi=vlc.desktop +audio/mp4=vlc.desktop +audio/mpeg=vlc.desktop +audio/mpegurl=vlc.desktop +audio/ogg=vlc.desktop +audio/prs.sid=vlc.desktop +audio/vnd.rn-realaudio=vlc.desktop +audio/x-ape=vlc.desktop +audio/x-flac=vlc.desktop +audio/x-gsm=vlc.desktop +audio/x-it=vlc.desktop +audio/x-m4a=vlc.desktop +audio/x-matroska=vlc.desktop +audio/x-mod=vlc.desktop +audio/x-mp3=vlc.desktop +audio/x-mpeg=vlc.desktop +audio/x-mpegurl=vlc.desktop +audio/x-ms-asf=vlc.desktop +audio/x-ms-asx=vlc.desktop +audio/x-ms-wax=vlc.desktop +audio/x-ms-wma=vlc.desktop +audio/x-musepack=vlc.desktop +audio/x-pn-aiff=vlc.desktop +audio/x-pn-au=vlc.desktop +audio/x-pn-realaudio=vlc.desktop +audio/x-pn-realaudio-plugin=vlc.desktop +audio/x-pn-wav=vlc.desktop +audio/x-pn-windows-acm=vlc.desktop +audio/x-realaudio=vlc.desktop +audio/x-real-audio=vlc.desktop +audio/x-sbc=vlc.desktop +audio/x-scpls=vlc.desktop +audio/x-speex=vlc.desktop +audio/x-tta=vlc.desktop +audio/x-vorbis=audacious.desktop +audio/x-vorbis+ogg=audacious.desktop +audio/x-wav=audacious.desktop +audio/x-wavpack=audacious.desktop +audio/x-xm=audacious.desktop +image/vnd.rn-realpix=vlc.desktop +image/x-pict=vlc.desktop +misc/ultravox=vlc.desktop +text/google-video-pointer=vlc.desktop +text/x-google-video-pointer=vlc.desktop +video/3gpp=vlc.desktop +video/dv=vlc.desktop +video/fli=vlc.desktop +video/flv=vlc.desktop +video/mp2t=vlc.desktop +video/mp4=vlc.desktop +video/mp4v-es=vlc.desktop +video/mpeg=vlc.desktop +video/msvideo=vlc.desktop +video/ogg=vlc.desktop +video/quicktime=vlc.desktop +video/vivo=vlc.desktop +video/vnd.divx=vlc.desktop +video/vnd.rn-realvideo=vlc.desktop +video/vnd.vivo=vlc.desktop +video/webm=vlc.desktop +video/x-anim=vlc.desktop +video/x-avi=vlc.desktop +video/x-flc=vlc.desktop +video/x-fli=vlc.desktop +video/x-flic=vlc.desktop +video/x-flv=vlc.desktop +video/x-m4v=vlc.desktop +video/x-matroska=vlc.desktop +video/x-mpeg=vlc.desktop +video/x-ms-asf=vlc.desktop +video/x-ms-asx=vlc.desktop +video/x-msvideo=vlc.desktop +video/x-ms-wm=vlc.desktop +video/x-ms-wmv=vlc.desktop +video/x-ms-wmx=vlc.desktop +video/x-ms-wvx=vlc.desktop +video/x-nsv=vlc.desktop +video/x-ogm+ogg=vlc.desktop +video/x-theora+ogg=vlc.desktop +video/x-totem-stream=vlc.desktop +x-content/video-dvd=vlc.desktop +x-content/video-vcd=vlc.desktop +x-content/video-svcd=vlc.desktop +x-scheme-handler/ghelp=yelp.desktop; +x-scheme-handler/help=yelp.desktop; +x-scheme-handler/http=firefox.desktop;epiphany.desktop +x-scheme-handler/https=firefox.desktop;epiphany.desktop +x-scheme-handler/mailto=evolution.desktop +application/x-bittorrent=transmission-gtk.desktop;deluge.desktop +x-scheme-handler/magnet=transmission-gtk.desktop;deluge.desktop diff --git a/mate-base/mate-session-manager/files/mate-session-manager-1.2.0-idle-transition.patch b/mate-base/mate-session-manager/files/mate-session-manager-1.2.0-idle-transition.patch new file mode 100644 index 00000000..62a229e5 --- /dev/null +++ b/mate-base/mate-session-manager/files/mate-session-manager-1.2.0-idle-transition.patch @@ -0,0 +1,10 @@ +--- a/mate-session/gs-idle-monitor.c 2012-02-29 22:03:08.000000000 +0100 ++++ b/mate-session/gs-idle-monitor.c 2012-08-08 11:49:13.308281663 +0200 +@@ -448,6 +448,7 @@ + attr.delta = delta; + attr.events = TRUE; + ++ attr.trigger.wait_value = _int64_to_xsyncvalue (_xsyncvalue_to_int64 (watch->interval) - 1); + attr.trigger.test_type = XSyncPositiveTransition; + if (watch->xalarm_positive != None) { + g_debug ("GSIdleMonitor: updating alarm for positive transition wait=%lld", diff --git a/mate-base/mate-session-manager/files/mate-session-manager-1.5.2-save-session-ui.patch b/mate-base/mate-session-manager/files/mate-session-manager-1.5.2-save-session-ui.patch new file mode 100644 index 00000000..8a57d44a --- /dev/null +++ b/mate-base/mate-session-manager/files/mate-session-manager-1.5.2-save-session-ui.patch @@ -0,0 +1,535 @@ +diff -burN a/capplet/gsm-properties-dialog.c b/capplet/gsm-properties-dialog.c +--- a/capplet/gsm-properties-dialog.c 2012-02-29 22:03:08.000000000 +0100 ++++ b/capplet/gsm-properties-dialog.c 2012-08-08 12:16:37.527332034 +0200 +@@ -26,6 +26,8 @@ + #include <glib.h> + #include <glib/gi18n.h> + #include <gtk/gtk.h> ++#include <dbus/dbus-glib.h> ++#include <dbus/dbus-glib-lowlevel.h> + + #include <mateconf/mateconf-client.h> + +@@ -36,6 +38,11 @@ + #include "gsp-app.h" + #include "gsp-app-manager.h" + ++ ++#define GSM_SERVICE_DBUS "org.mate.SessionManager" ++#define GSM_PATH_DBUS "/org/mate/SessionManager" ++#define GSM_INTERFACE_DBUS "org.mate.SessionManager" ++ + #define GSM_PROPERTIES_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_PROPERTIES_DIALOG, GsmPropertiesDialogPrivate)) + + #define IS_STRING_EMPTY(x) ((x)==NULL||(x)[0]=='\0') +@@ -50,6 +57,7 @@ + #define CAPPLET_DELETE_WIDGET_NAME "session_properties_delete_button" + #define CAPPLET_EDIT_WIDGET_NAME "session_properties_edit_button" + #define CAPPLET_SAVE_WIDGET_NAME "session_properties_save_button" ++#define CAPPLET_SESSION_SAVED_WIDGET_NAME "session_properties_session_saved_label" + #define CAPPLET_REMEMBER_WIDGET_NAME "session_properties_remember_toggle" + + #define STARTUP_APP_ICON "system-run" +@@ -493,10 +501,66 @@ + } + + static void ++session_saved_message (GsmPropertiesDialog *dialog, ++ const char *msg, ++ gboolean is_error) ++{ ++ GtkLabel *label; ++ gchar *markup; ++ ++ label = GTK_LABEL (gtk_builder_get_object (dialog->priv->xml, CAPPLET_SESSION_SAVED_WIDGET_NAME)); ++ if (is_error) ++ markup = g_markup_printf_escaped ("<span foreground=\"red\">%s</span>", msg); ++ else ++ markup = g_markup_escape_text (msg, -1); ++ ++ gtk_label_set_markup (label, markup); ++ g_free (markup); ++} ++ ++static void ++session_saved_cb (DBusGProxy *proxy, ++ DBusGProxyCall *call_id, ++ void *user_data) ++{ ++ gboolean res; ++ GsmPropertiesDialog *dialog = user_data; ++ ++ res = dbus_g_proxy_end_call (proxy, call_id, NULL, G_TYPE_INVALID); ++ if (res) ++ session_saved_message (dialog, _("Your session has been saved."), FALSE); ++ else ++ session_saved_message (dialog, _("Failed to save session"), TRUE); ++ ++ g_object_unref (proxy); ++} ++ ++static void + on_save_session_clicked (GtkWidget *widget, + GsmPropertiesDialog *dialog) + { +- g_debug ("Session saving is not implemented yet!"); ++ DBusGConnection *conn; ++ DBusGProxy *proxy; ++ DBusGProxyCall *call; ++ ++ conn = dbus_g_bus_get (DBUS_BUS_SESSION, NULL); ++ if (conn == NULL) { ++ session_saved_message (dialog, _("Could not connect to the session bus"), TRUE); ++ return; ++ } ++ ++ proxy = dbus_g_proxy_new_for_name (conn, GSM_SERVICE_DBUS, GSM_PATH_DBUS, GSM_INTERFACE_DBUS); ++ if (proxy == NULL) { ++ session_saved_message (dialog, _("Could not connect to the session manager"), TRUE); ++ return; ++ } ++ ++ call = dbus_g_proxy_begin_call (proxy, "SaveSession", session_saved_cb, dialog, NULL, G_TYPE_INVALID); ++ if (call == NULL) { ++ session_saved_message (dialog, _("Failed to save session"), TRUE); ++ g_object_unref (proxy); ++ return; ++ } + } + + static void +diff -burN a/configure.ac b/configure.ac +--- a/configure.ac 2012-02-29 22:03:09.000000000 +0100 ++++ b/configure.ac 2012-08-08 12:18:58.740336360 +0200 +@@ -75,6 +75,7 @@ + PKG_CHECK_MODULES(SESSION_PROPERTIES, + glib-2.0 >= $GLIB_REQUIRED + gtk+-$GTK_API_VERSION >= $GTK_REQUIRED ++ dbus-glib-1 >= $DBUS_GLIB_REQUIRED + ) + + PKG_CHECK_MODULES(SM, sm) +diff -burN a/data/session-properties.ui b/data/session-properties.ui +--- a/data/session-properties.ui 2012-02-29 22:03:08.000000000 +0100 ++++ b/data/session-properties.ui 2012-08-08 12:22:36.619343035 +0200 +@@ -148,6 +148,7 @@ + <property name="visible">True</property> + <child> + <object class="GtkButton" id="session_properties_save_button"> ++ <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <child> +@@ -191,6 +192,17 @@ + <property name="position">1</property> + </packing> + </child> ++ <child> ++ <object class="GtkLabel" id="session_properties_session_saved_label"> ++ <property name="visible">True</property> ++ <property name="wrap">True</property> ++ </object> ++ <packing> ++ <property name="expand">False</property> ++ <property name="fill">False</property> ++ <property name="position">2</property> ++ </packing> ++ </child> + </object> + <packing> + <property name="position">1</property> +diff -burN a/mate-session/gsm-client.c b/mate-session/gsm-client.c +--- a/mate-session/gsm-client.c 2012-02-29 22:03:08.000000000 +0100 ++++ b/mate-session/gsm-client.c 2012-08-08 12:24:20.120346205 +0200 +@@ -510,6 +510,17 @@ + g_signal_emit (client, signals[DISCONNECTED], 0); + } + ++gboolean ++gsm_client_request_save (GsmClient *client, ++ guint flags, ++ GError **error) ++{ ++ g_return_val_if_fail (GSM_IS_CLIENT (client), FALSE); ++ ++ return GSM_CLIENT_GET_CLASS (client)->impl_request_save (client, flags, error); ++} ++ ++ + GKeyFile * + gsm_client_save (GsmClient *client, + GError **error) +diff -burN a/mate-session/gsm-client.h b/mate-session/gsm-client.h +--- a/mate-session/gsm-client.h 2012-02-29 22:03:09.000000000 +0100 ++++ b/mate-session/gsm-client.h 2012-08-08 12:26:38.848350455 +0200 +@@ -94,6 +94,9 @@ + GError **error); + gboolean (*impl_stop) (GsmClient *client, + GError **error); ++ gboolean (*impl_request_save) (GsmClient *client, ++ guint flags, ++ GError **error); + GKeyFile * (*impl_save) (GsmClient *client, + GError **error); + }; +@@ -139,6 +142,10 @@ + + void gsm_client_disconnected (GsmClient *client); + ++gboolean gsm_client_request_save (GsmClient *client, ++ guint flags, ++ GError **error); ++ + GKeyFile *gsm_client_save (GsmClient *client, + GError **error); + /* exported to bus */ +diff -burN a/mate-session/gsm-dbus-client.c b/mate-session/gsm-dbus-client.c +--- a/mate-session/gsm-dbus-client.c 2012-02-29 22:03:08.000000000 +0100 ++++ b/mate-session/gsm-dbus-client.c 2012-08-08 12:38:15.393371794 +0200 +@@ -413,6 +413,19 @@ + G_OBJECT_CLASS (gsm_dbus_client_parent_class)->finalize (object); + } + ++static gboolean ++dbus_client_request_save (GsmClient *client, ++ guint flags, ++ GError **error) ++{ ++ g_debug ("GsmDBusClient: sending save request to client with id %s", ++ gsm_client_peek_id (client)); ++ ++ /* FIXME: The protocol does not support this */ ++ ++ return FALSE; ++} ++ + static GKeyFile * + dbus_client_save (GsmClient *client, + GError **error) +@@ -665,6 +678,7 @@ + object_class->set_property = gsm_dbus_client_set_property; + object_class->dispose = gsm_dbus_client_dispose; + ++ client_class->impl_request_save = dbus_client_request_save; + client_class->impl_save = dbus_client_save; + client_class->impl_stop = dbus_client_stop; + client_class->impl_query_end_session = dbus_client_query_end_session; +diff -burN a/mate-session/gsm-manager.c b/mate-session/gsm-manager.c +--- a/mate-session/gsm-manager.c 2012-02-29 22:03:09.000000000 +0100 ++++ b/mate-session/gsm-manager.c 2012-08-08 12:47:24.627388620 +0200 +@@ -68,6 +68,7 @@ + #define GSM_MANAGER_DBUS_NAME "org.mate.SessionManager" + + #define GSM_MANAGER_PHASE_TIMEOUT 30 /* seconds */ ++#define GSM_MANAGER_SAVE_SESSION_TIMEOUT 2 + + #define MDM_FLEXISERVER_COMMAND "mdmflexiserver" + #define MDM_FLEXISERVER_ARGS "--startnew Standard" +@@ -1176,6 +1177,69 @@ + + } + ++static gboolean ++_client_request_save (GsmClient *client, ++ ClientEndSessionData *data) ++{ ++ gboolean ret; ++ GError *error; ++ ++ error = NULL; ++ ret = gsm_client_request_save (client, data->flags, &error); ++ if (ret) { ++ g_debug ("GsmManager: adding client to query clients: %s", gsm_client_peek_id (client)); ++ data->manager->priv->query_clients = g_slist_prepend (data->manager->priv->query_clients, ++ client); ++ } else if (error) { ++ g_debug ("GsmManager: unable to query client: %s", error->message); ++ g_error_free (error); ++ } ++ ++ return FALSE; ++} ++ ++static gboolean ++_client_request_save_helper (const char *id, ++ GsmClient *client, ++ ClientEndSessionData *data) ++{ ++ return _client_request_save (client, data); ++} ++ ++static void ++query_save_session_complete (GsmManager *manager) ++{ ++ GError *error = NULL; ++ ++ if (g_slist_length (manager->priv->next_query_clients) > 0) { ++ ClientEndSessionData data; ++ ++ data.manager = manager; ++ data.flags = GSM_CLIENT_END_SESSION_FLAG_LAST; ++ ++ g_slist_foreach (manager->priv->next_query_clients, ++ (GFunc)_client_request_save, ++ &data); ++ ++ g_slist_free (manager->priv->next_query_clients); ++ manager->priv->next_query_clients = NULL; ++ ++ return; ++ } ++ ++ if (manager->priv->query_timeout_id > 0) { ++ g_source_remove (manager->priv->query_timeout_id); ++ manager->priv->query_timeout_id = 0; ++ } ++ ++ gsm_session_save (manager->priv->clients, &error); ++ ++ if (error) { ++ g_warning ("Error saving session: %s", error->message); ++ g_error_free (error); ++ } ++} ++ + static guint32 + generate_cookie (void) + { +@@ -1250,6 +1314,21 @@ + return FALSE; + } + ++static gboolean ++_on_query_save_session_timeout (GsmManager *manager) ++{ ++ manager->priv->query_timeout_id = 0; ++ ++ g_debug ("GsmManager: query to save session timed out"); ++ ++ g_slist_free (manager->priv->query_clients); ++ manager->priv->query_clients = NULL; ++ ++ query_save_session_complete (manager); ++ ++ return FALSE; ++} ++ + static void + do_phase_query_end_session (GsmManager *manager) + { +@@ -1886,13 +1965,32 @@ + const char *reason, + GsmManager *manager) + { +- /* just ignore if received outside of shutdown */ +- if (manager->priv->phase < GSM_MANAGER_PHASE_QUERY_END_SESSION) { ++ /* just ignore if we are not yet running */ ++ if (manager->priv->phase < GSM_MANAGER_PHASE_RUNNING) { + return; + } + + g_debug ("GsmManager: Response from end session request: is-ok=%d do-last=%d cancel=%d reason=%s", is_ok, do_last, cancel, reason ? reason :""); + ++ if (manager->priv->phase == GSM_MANAGER_PHASE_RUNNING) { ++ /* Ignore responses when no requests were sent */ ++ if (manager->priv->query_clients == NULL) { ++ return; ++ } ++ ++ manager->priv->query_clients = g_slist_remove (manager->priv->query_clients, client); ++ ++ if (do_last) { ++ manager->priv->next_query_clients = g_slist_prepend (manager->priv->next_query_clients, ++ client); ++ } ++ ++ if (manager->priv->query_clients == NULL) { ++ query_save_session_complete (manager); ++ } ++ return; ++ } ++ + if (cancel) { + cancel_end_session (manager); + return; +@@ -1991,6 +2089,15 @@ + } + + static void ++on_xsmp_client_save_request (GsmXSMPClient *client, ++ gboolean show_dialog, ++ GsmManager *manager) ++{ ++ g_debug ("GsmManager: save_request"); ++ gsm_manager_save_session (manager, NULL); ++} ++ ++static void + on_store_client_added (GsmStore *store, + const char *id, + GsmManager *manager) +@@ -2011,6 +2118,10 @@ + "logout-request", + G_CALLBACK (on_xsmp_client_logout_request), + manager); ++ g_signal_connect (client, ++ "save-request", ++ G_CALLBACK (on_xsmp_client_save_request), ++ manager); + } + + g_signal_connect (client, +@@ -2968,6 +3079,41 @@ + } + + gboolean ++gsm_manager_save_session (GsmManager *manager, ++ GError **error) ++{ ++ ClientEndSessionData data; ++ ++ g_debug ("GsmManager: SaveSession called"); ++ ++ g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE); ++ ++ if (manager->priv->phase != GSM_MANAGER_PHASE_RUNNING) { ++ g_set_error (error, ++ GSM_MANAGER_ERROR, ++ GSM_MANAGER_ERROR_NOT_IN_RUNNING, ++ "SaveSession interface is only available during the Running phase"); ++ return FALSE; ++ } ++ ++ data.manager = manager; ++ data.flags = 0; ++ gsm_store_foreach (manager->priv->clients, ++ (GsmStoreFunc)_client_request_save_helper, ++ &data); ++ ++ if (manager->priv->query_clients) { ++ manager->priv->query_timeout_id = g_timeout_add_seconds (GSM_MANAGER_SAVE_SESSION_TIMEOUT, ++ (GSourceFunc)_on_query_save_session_timeout, ++ manager); ++ return TRUE; ++ } else { ++ g_debug ("GsmManager: Nothing to save"); ++ return FALSE; ++ } ++} ++ ++gboolean + gsm_manager_can_shutdown (GsmManager *manager, + gboolean *shutdown_available, + GError **error) +diff -burN a/mate-session/gsm-manager.h b/mate-session/gsm-manager.h +--- a/mate-session/gsm-manager.h 2012-02-29 22:03:09.000000000 +0100 ++++ b/mate-session/gsm-manager.h 2012-08-08 12:49:14.262391979 +0200 +@@ -154,6 +154,9 @@ + gboolean gsm_manager_shutdown (GsmManager *manager, + GError **error); + ++gboolean gsm_manager_save_session (GsmManager *manager, ++ GError **error); ++ + gboolean gsm_manager_can_shutdown (GsmManager *manager, + gboolean *shutdown_available, + GError **error); +diff -burN a/mate-session/gsm-xsmp-client.c b/mate-session/gsm-xsmp-client.c +--- a/mate-session/gsm-xsmp-client.c 2012-02-29 22:03:08.000000000 +0100 ++++ b/mate-session/gsm-xsmp-client.c 2012-08-08 12:52:27.719397905 +0200 +@@ -69,6 +69,7 @@ + enum { + REGISTER_REQUEST, + LOGOUT_REQUEST, ++ SAVE_REQUEST, + LAST_SIGNAL + }; + +@@ -502,6 +503,31 @@ + return TRUE; + } + ++static gboolean ++xsmp_request_save (GsmClient *client, ++ guint flags, ++ GError **error) ++{ ++ GsmXSMPClient *xsmp = (GsmXSMPClient *) client; ++ ++ g_debug ("GsmXSMPClient: xsmp_request_save ('%s')", xsmp->priv->description); ++ ++ if (xsmp->priv->conn == NULL) { ++ g_set_error (error, ++ GSM_CLIENT_ERROR, ++ GSM_CLIENT_ERROR_NOT_REGISTERED, ++ "Client is not registered"); ++ return FALSE; ++ } ++ ++ if (flags & GSM_CLIENT_END_SESSION_FLAG_LAST) ++ xsmp_save_yourself_phase2 (client); ++ else ++ do_save_yourself (xsmp, SmSaveLocal, FALSE); ++ ++ return TRUE; ++} ++ + static char * + get_desktop_file_path (GsmXSMPClient *client) + { +@@ -976,6 +1002,8 @@ + object_class->get_property = gsm_xsmp_client_get_property; + object_class->set_property = gsm_xsmp_client_set_property; + ++ ++ client_class->impl_request_save = xsmp_request_save; + client_class->impl_save = xsmp_save; + client_class->impl_stop = xsmp_stop; + client_class->impl_query_end_session = xsmp_query_end_session; +@@ -1003,6 +1031,16 @@ + NULL, + NULL, + g_cclosure_marshal_VOID__BOOLEAN, ++ G_TYPE_NONE, ++ 1, G_TYPE_BOOLEAN); ++ signals[SAVE_REQUEST] = ++ g_signal_new ("save-request", ++ G_OBJECT_CLASS_TYPE (object_class), ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (GsmXSMPClientClass, save_request), ++ NULL, ++ NULL, ++ g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, + 1, G_TYPE_BOOLEAN); + +diff -burN a/mate-session/gsm-xsmp-client.h b/mate-session/gsm-xsmp-client.h +--- a/mate-session/gsm-xsmp-client.h 2012-02-29 22:03:09.000000000 +0100 ++++ b/mate-session/gsm-xsmp-client.h 2012-08-08 12:53:39.629400108 +0200 +@@ -57,6 +57,8 @@ + gboolean (*logout_request) (GsmXSMPClient *client, + gboolean prompt); + ++ gboolean (*save_request) (GsmXSMPClient *client, ++ gboolean prompt); + + void (*saved_state) (GsmXSMPClient *client); + +diff -burN a/mate-session/org.mate.SessionManager.xml b/mate-session/org.mate.SessionManager.xml +--- a/mate-session/org.mate.SessionManager.xml 2012-02-29 22:03:09.000000000 +0100 ++++ b/mate-session/org.mate.SessionManager.xml 2012-08-08 12:57:41.216407509 +0200 +@@ -256,6 +256,14 @@ + </doc:doc> + </method> + ++ <method name="SaveSession"> ++ <doc:doc> ++ <doc:description> ++ <doc:para>Request to save session</doc:para> ++ </doc:description> ++ </doc:doc> ++ </method> ++ + <method name="CanShutdown"> + <arg name="is_available" direction="out" type="b"> + <doc:doc> diff --git a/mate-base/mate-session-manager/files/mate-session-manager-upower1.patch b/mate-base/mate-session-manager/files/mate-session-manager-upower1.patch new file mode 100644 index 00000000..8c86a1c6 --- /dev/null +++ b/mate-base/mate-session-manager/files/mate-session-manager-upower1.patch @@ -0,0 +1,86 @@ +From 80be90bb422ef8cb5a28c7ff3fe2a337dce8c368 Mon Sep 17 00:00:00 2001 +From: Stefano Karapetsas <stefano@karapetsas.com> +Date: Tue, 22 Apr 2014 16:44:37 +0000 +Subject: Allow to build with upower 0.99 + +--- +diff --git a/mate-session/gsm-logout-dialog.c b/mate-session/gsm-logout-dialog.c +index da3d651..697b70d 100644 +--- a/mate-session/gsm-logout-dialog.c ++++ b/mate-session/gsm-logout-dialog.c +@@ -211,10 +211,10 @@ gsm_logout_supports_system_suspend (GsmLogoutDialog *logout_dialog) + if (LOGIND_RUNNING()) + ret = gsm_systemd_can_suspend (logout_dialog->priv->systemd); + #endif +-#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) ++#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0) + else + #endif +-#ifdef HAVE_UPOWER ++#if defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0) + ret = up_client_get_can_suspend (logout_dialog->priv->up_client); + #endif + return ret; +@@ -229,10 +229,10 @@ gsm_logout_supports_system_hibernate (GsmLogoutDialog *logout_dialog) + if (LOGIND_RUNNING()) + ret = gsm_systemd_can_hibernate (logout_dialog->priv->systemd); + #endif +-#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) ++#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0) + else + #endif +-#ifdef HAVE_UPOWER ++#if defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0) + ret = up_client_get_can_hibernate (logout_dialog->priv->up_client); + #endif + return ret; +diff --git a/mate-session/gsm-manager.c b/mate-session/gsm-manager.c +index eda565b..638ef10 100644 +--- a/mate-session/gsm-manager.c ++++ b/mate-session/gsm-manager.c +@@ -1163,10 +1163,10 @@ manager_attempt_hibernate (GsmManager *manager) + gsm_systemd_attempt_hibernate (systemd); + } + #endif +-#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) ++#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0) + else { + #endif +-#ifdef HAVE_UPOWER ++#if defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0) + can_hibernate = up_client_get_can_hibernate (manager->priv->up_client); + if (can_hibernate) { + +@@ -1182,7 +1182,7 @@ manager_attempt_hibernate (GsmManager *manager) + } + } + #endif +-#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) ++#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0) + } + #endif + } +@@ -1208,10 +1208,10 @@ manager_attempt_suspend (GsmManager *manager) + gsm_systemd_attempt_suspend (systemd); + } + #endif +-#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) ++#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0) + else { + #endif +-#ifdef HAVE_UPOWER ++#if defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0) + can_suspend = up_client_get_can_suspend (manager->priv->up_client); + if (can_suspend) { + +@@ -1227,7 +1227,7 @@ manager_attempt_suspend (GsmManager *manager) + } + } + #endif +-#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) ++#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER) && !UP_CHECK_VERSION(0, 99, 0) + } + #endif + } +-- +cgit diff --git a/mate-base/mate-session-manager/mate-session-manager-1.8.1-r1.ebuild b/mate-base/mate-session-manager/mate-session-manager-1.8.1-r1.ebuild new file mode 100644 index 00000000..9d848576 --- /dev/null +++ b/mate-base/mate-session-manager/mate-session-manager-1.8.1-r1.ebuild @@ -0,0 +1,104 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/mate-base/mate-session-manager/mate-session-manager-1.8.1-r1.ebuild,v 1.6 2014/09/19 17:25:19 ssuominen Exp $ + +EAPI="5" + +GCONF_DEBUG="yes" + +inherit autotools gnome2 versionator + +MATE_BRANCH="$(get_version_component_range 1-2)" + +SRC_URI="http://pub.mate-desktop.org/releases/${MATE_BRANCH}/${P}.tar.xz" +DESCRIPTION="MATE session manager" +HOMEPAGE="http://mate-desktop.org/" + +LICENSE="GPL-2 LGPL-2 FDL-1.1" +SLOT="0" +KEYWORDS="amd64 x86" + +IUSE="ipv6 elibc_FreeBSD gnome-keyring systemd upower" + +# x11-misc/xdg-user-dirs{,-gtk} are needed to create the various XDG_*_DIRs, and +# create .config/user-dirs.dirs which is read by glib to get G_USER_DIRECTORY_* +# xdg-user-dirs-update is run during login (see 10-user-dirs-update-gnome below). + +RDEPEND=">=dev-libs/dbus-glib-0.76 + >=dev-libs/glib-2.25:2 + dev-libs/libxslt + sys-apps/dbus + x11-apps/xdpyinfo + x11-libs/gdk-pixbuf:2 + >=x11-libs/gtk+-2.14:2 + x11-libs/libICE + x11-libs/libSM + x11-libs/libX11 + x11-libs/libXau + x11-libs/libXext + x11-libs/libXrender + x11-libs/libXtst + x11-libs/pango + x11-libs/xtrans + x11-misc/xdg-user-dirs + x11-misc/xdg-user-dirs-gtk + virtual/libintl + elibc_FreeBSD? ( dev-libs/libexecinfo ) + gnome-keyring? ( gnome-base/gnome-keyring ) + systemd? ( sys-apps/systemd ) + upower? ( >=sys-power/upower-0.9.23 )" + +DEPEND="${RDEPEND} + >=dev-util/intltool-0.40:* + >=dev-lang/perl-5 + >=mate-base/mate-common-1.6 + >=sys-devel/gettext-0.10.40:* + virtual/pkgconfig:* + !<gnome-base/gdm-2.20.4" + +src_prepare() { + # Add "session saving" button back, + # see https://bugzilla.gnome.org/show_bug.cgi?id=575544 + epatch "${FILESDIR}"/${PN}-1.5.2-save-session-ui.patch + + # Fix race condition in idle monitor, GNOME bug applies to MATE too, + # see https://bugzilla.gnome.org/show_bug.cgi?id=627903 + epatch "${FILESDIR}"/${PN}-1.2.0-idle-transition.patch + # allow to build with upower1 + # cherry picked from http://git.mate-desktop.org/mate-session-manager/commit/?id=80be90bb422ef8cb5a28c7ff3fe2a337dce8c368 + epatch "${FILESDIR}"/${PN}-upower1.patch + + eautoreconf + gnome2_src_prepare +} + +src_configure() { + gnome2_src_configure \ + --docdir="${EPREFIX}/usr/share/doc/${PF}" \ + --with-default-wm=mate-wm \ + --with-gtk=2.0 \ + $(use_enable ipv6) \ + $(use_with systemd) \ + $(use_enable upower) +} + +DOCS="AUTHORS ChangeLog NEWS README" + +src_install() { + gnome2_src_install + + dodir /etc/X11/Sessions/ + exeinto /etc/X11/Sessions/ + doexe "${FILESDIR}"/MATE + + dodir /usr/share/mate/applications/ + insinto /usr/share/mate/applications/ + doins "${FILESDIR}"/defaults.list + + dodir /etc/X11/xinit/xinitrc.d/ + exeinto /etc/X11/xinit/xinitrc.d/ + doexe "${FILESDIR}"/15-xdg-data-mate + + # This should be done in MATE too, see Gentoo bug #270852 + doexe "${FILESDIR}"/10-user-dirs-update-mate +} diff --git a/mate-extra/mate-power-manager/Manifest b/mate-extra/mate-power-manager/Manifest new file mode 100644 index 00000000..f7b22cfa --- /dev/null +++ b/mate-extra/mate-power-manager/Manifest @@ -0,0 +1 @@ +DIST mate-power-manager-1.8.0.tar.xz 3339588 SHA256 3d83b7736b0b6256242db3b9efaa18530b4ba6d80b146eafaf511230ae926d9f SHA512 f91b195e384138ce0881f53f4d3e8924d422445ac258de2138da16ab29999cd367b2e37c226e5d56e698bc54b82c8996b3263a638702f45b2f96ffabbceca479 WHIRLPOOL 31a423d25abd488bceb13354cabc3f80844f791060339ea38d4fa12f8ac80d1d4a4c94c8e07af7ba489fd5da98f7bbdfbf4edebe339926e91e0d39747ddb3a34 diff --git a/mate-extra/mate-power-manager/files/mate-power-manager-1.6-libsecret.patch b/mate-extra/mate-power-manager/files/mate-power-manager-1.6-libsecret.patch new file mode 100644 index 00000000..b36ce4e6 --- /dev/null +++ b/mate-extra/mate-power-manager/files/mate-power-manager-1.6-libsecret.patch @@ -0,0 +1,144 @@ +diff --git a/README b/README +index 77e1213..3f6a122 100644 +--- a/README ++++ b/README +@@ -15,7 +15,7 @@ To build, MATE Power Manager requires + + - Glib (2.13.0 or later) + - Gtk2+ (2.11.0 or later) +- - MATE Keyring (1.1.0 or later) ++ - GNOME Keyring (3.0.0 or later) + - DBus (0.70 or later) + - libnotify (0.7.0 or later) + - Cairo (1.0.0 or later) +diff --git a/configure.ac b/configure.ac +index 89309ff..912c362 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -102,7 +102,7 @@ GLIB_REQUIRED=2.13.0 + GIO_REQUIRED=2.25.0 + GTK_REQUIRED=2.17.7 + GDK_REQUIRED=2.11.0 +-MATE_KEYRING_REQUIRED=1.1.0 ++GNOME_KEYRING_REQUIRED=3.0.0 + DBUS_REQUIRED=1.0 + DBUS_GLIB_REQUIRED=0.70 + LIBNOTIFY_REQUIRED=0.7.0 +@@ -249,18 +249,18 @@ fi + AM_CONDITIONAL([HAVE_TESTS], [test $have_tests = yes]) + + dnl --------------------------------------------------------------------------- +-dnl - Build mate-keyring support ++dnl - Build gnome-keyring support + dnl --------------------------------------------------------------------------- + AC_ARG_WITH(keyring, + [AS_HELP_STRING([--without-keyring], +- [Disable the use of mate-keyring])], ++ [Disable the use of gnome-keyring])], + [], + [with_keyring=yes]) + + AM_CONDITIONAL([WITH_KEYRING],[test "$with_keyring" = "yes"]) + + if test "$with_keyring" = "yes"; then +- PKG_CHECK_MODULES(KEYRING, mate-keyring-1 >= $MATE_KEYRING_REQUIRED) ++ PKG_CHECK_MODULES(KEYRING, gnome-keyring-1 >= $GNOME_KEYRING_REQUIRED) + AC_DEFINE([WITH_KEYRING],[1],[Define if KEYRING support is enabled]) + fi + +@@ -393,7 +393,7 @@ echo " + datadir: ${datadir} + compiler: ${CC} + cflags: ${CFLAGS} +- mate-keyring support: ${with_keyring} ++ gnome-keyring support: ${with_keyring} + Building extra applets: ${enable_applets} + Self test support: ${have_tests} + Use libunique: ${enable_libunique} +diff --git a/data/org.mate.power-manager.gschema.xml.in b/data/org.mate.power-manager.gschema.xml.in +index dcd2cd4..adecce0 100644 +--- a/data/org.mate.power-manager.gschema.xml.in ++++ b/data/org.mate.power-manager.gschema.xml.in +@@ -183,13 +183,13 @@ + </key> + <key name="lock-keyring-suspend" type="b"> + <default>false</default> +- <_summary>Lock MATE keyring on sleep</_summary> +- <_description>Whether the MATE keyring is locked before the computer enters suspend. This means the keyring will have to be unlocked on resume.</_description> ++ <_summary>Lock GNOME keyring on sleep</_summary> ++ <_description>Whether the GNOME keyring is locked before the computer enters suspend. This means the keyring will have to be unlocked on resume.</_description> + </key> + <key name="lock-keyring-hibernate" type="b"> + <default>true</default> +- <_summary>Lock MATE keyring on sleep</_summary> +- <_description>Whether the MATE keyring is locked before the computer enters hibernate. This means the keyring will have to be unlocked on resume.</_description> ++ <_summary>Lock GNOME keyring on sleep</_summary> ++ <_description>Whether the GNOME keyring is locked before the computer enters hibernate. This means the keyring will have to be unlocked on resume.</_description> + </key> + <key name="spindown-enable-ac" type="b"> + <default>false</default> +diff --git a/src/gpm-control.c b/src/gpm-control.c +index cb84814..8253336 100644 +--- a/src/gpm-control.c ++++ b/src/gpm-control.c +@@ -42,7 +42,7 @@ + #include <libupower-glib/upower.h> + + #ifdef WITH_KEYRING +-#include <mate-keyring.h> ++#include <gnome-keyring.h> + #endif /* WITH_KEYRING */ + + #include "egg-debug.h" +@@ -212,8 +212,8 @@ enum { + GpmScreensaver *screensaver; + guint32 throttle_cookie = 0; + #ifdef WITH_KEYRING +- gboolean lock_mate_keyring; +- MateKeyringResult keyres; ++ gboolean lock_gnome_keyring; ++ GnomeKeyringResult keyres; + #endif /* WITH_KEYRING */ + + GError *dbus_error = NULL; +@@ -234,10 +234,10 @@ enum { + + #ifdef WITH_KEYRING + /* we should perhaps lock keyrings when sleeping #375681 */ +- lock_mate_keyring = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_LOCK_KEYRING_SUSPEND); +- if (lock_mate_keyring) { +- keyres = mate_keyring_lock_all_sync (); +- if (keyres != MATE_KEYRING_RESULT_OK) ++ lock_gnome_keyring = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_LOCK_KEYRING_SUSPEND); ++ if (lock_gnome_keyring) { ++ keyres = gnome_keyring_lock_all_sync (); ++ if (keyres != GNOME_KEYRING_RESULT_OK) + egg_warning ("could not lock keyring"); + } + #endif /* WITH_KEYRING */ +@@ -323,8 +323,8 @@ enum { + GpmScreensaver *screensaver; + guint32 throttle_cookie = 0; + #ifdef WITH_KEYRING +- gboolean lock_mate_keyring; +- MateKeyringResult keyres; ++ gboolean lock_gnome_keyring; ++ GnomeKeyringResult keyres; + #endif /* WITH_KEYRING */ + + GError *dbus_error = NULL; +@@ -345,10 +345,10 @@ enum { + + #ifdef WITH_KEYRING + /* we should perhaps lock keyrings when sleeping #375681 */ +- lock_mate_keyring = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_LOCK_KEYRING_HIBERNATE); +- if (lock_mate_keyring) { +- keyres = mate_keyring_lock_all_sync (); +- if (keyres != MATE_KEYRING_RESULT_OK) { ++ lock_gnome_keyring = g_settings_get_boolean (control->priv->settings, GPM_SETTINGS_LOCK_KEYRING_HIBERNATE); ++ if (lock_gnome_keyring) { ++ keyres = gnome_keyring_lock_all_sync (); ++ if (keyres != GNOME_KEYRING_RESULT_OK) { + egg_warning ("could not lock keyring"); + } + } diff --git a/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-avoid-levels-is-0-warning.patch b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-avoid-levels-is-0-warning.patch new file mode 100644 index 00000000..9bccb5c9 --- /dev/null +++ b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-avoid-levels-is-0-warning.patch @@ -0,0 +1,15 @@ +diff --git a/src/gpm-kbd-backlight.c b/src/gpm-kbd-backlight.c +index 0ac6801..a439e94 100644 +--- a/src/gpm-kbd-backlight.c ++++ b/src/gpm-kbd-backlight.c +@@ -113,6 +113,9 @@ gpm_kbd_backlight_set (GpmKbdBacklight *backlight, + guint goal; + + g_return_val_if_fail (GPM_IS_KBD_BACKLIGHT (backlight), FALSE); ++ /* avoid warnings if no keyboard brightness is available */ ++ if (backlight->priv->max_brightness < 1) ++ return FALSE; + /* if we're setting the same we are, don't bother */ + //g_return_val_if_fail (backlight->priv->brightness_percent != percentage, FALSE); + + diff --git a/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-dbus_interface_keyboard_backlight_controls.patch b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-dbus_interface_keyboard_backlight_controls.patch new file mode 100644 index 00000000..689192ff --- /dev/null +++ b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-dbus_interface_keyboard_backlight_controls.patch @@ -0,0 +1,160 @@ +diff -uprN mate-power-manager-orig/src/gpm-common.h mate-power-manager/src/gpm-common.h +--- mate-power-manager-orig/src/gpm-common.h 2013-10-03 13:56:55.000000000 +0200 ++++ mate-power-manager/src/gpm-common.h 2013-10-13 19:54:10.649901214 +0200 +@@ -33,6 +33,7 @@ G_BEGIN_DECLS + #define GPM_DBUS_SERVICE "org.mate.PowerManager" + #define GPM_DBUS_INTERFACE "org.mate.PowerManager" + #define GPM_DBUS_INTERFACE_BACKLIGHT "org.mate.PowerManager.Backlight" ++#define GPM_DBUS_INTERFACE_KBD_BACKLIGHT "org.mate.PowerManager.KbdBacklight" + #define GPM_DBUS_PATH "/org/mate/PowerManager" + #define GPM_DBUS_PATH_BACKLIGHT "/org/mate/PowerManager/Backlight" + #define GPM_DBUS_PATH_KBD_BACKLIGHT "/org/mate/PowerManager/KbdBacklight" +diff -uprN mate-power-manager-orig/src/gpm-kbd-backlight.c mate-power-manager/src/gpm-kbd-backlight.c +--- mate-power-manager-orig/src/gpm-kbd-backlight.c 2013-10-03 13:56:55.000000000 +0200 ++++ mate-power-manager/src/gpm-kbd-backlight.c 2013-10-13 19:58:07.154258855 +0200 +@@ -31,21 +31,6 @@ + #include "gpm-kbd-backlight.h" + #include "gsd-media-keys-window.h" + +-static const gchar *kbd_backlight_introspection = "" +-"<?xml version=\"1.0\" encoding=\"UTF-8\"?>""<node name=\"/\">" +- "<interface name=\"org.mate.PowerManager.Backlight\">" +- "<method name=\"GetBrightness\">" +- "<arg type=\"u\" name=\"percentage_brightness\" direction=\"out\"/>" +- "</method>" +- "<method name=\"SetBrightness\">" +- "<arg type=\"u\" name=\"percentage_brightness\" direction=\"in\"/>" +- "</method>" +- "<signal name=\"BrightnessChanged\">" +- "<arg type=\"u\" name=\"percentage_brightness\" direction=\"out\"/>" +- "</signal>" +- "</interface>" +-"</node>"; +- + #define GPM_KBD_BACKLIGHT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GPM_TYPE_KBD_BACKLIGHT, GpmKbdBacklightPrivate)) + + struct GpmKbdBacklightPrivate +@@ -430,40 +415,6 @@ gpm_kbd_backlight_dbus_property_set (GDB + return FALSE; + } + +-/** +- * gpm_kbd_backlight_register_dbus: +- * @backlight: +- * @connection: +- * @error: +- **/ +-void +-gpm_kbd_backlight_register_dbus (GpmKbdBacklight *backlight, +- GDBusConnection *connection, +- GError **error) +-{ +- GDBusNodeInfo *node_info; +- GDBusInterfaceInfo *interface_info; +- GDBusInterfaceVTable interface_vtable = { +- gpm_kbd_backlight_dbus_method_call, +- gpm_kbd_backlight_dbus_property_get, +- gpm_kbd_backlight_dbus_property_set +- }; +- +- node_info = g_dbus_node_info_new_for_xml (kbd_backlight_introspection, NULL); +- interface_info = g_dbus_node_info_lookup_interface (node_info, GPM_DBUS_INTERFACE_BACKLIGHT); +- +- backlight->priv->bus_connection = g_object_ref (connection); +- backlight->priv->bus_object_id = +- g_dbus_connection_register_object (connection, +- GPM_DBUS_PATH_KBD_BACKLIGHT, +- interface_info, +- &interface_vtable, +- backlight, +- NULL, +- error); +- g_dbus_node_info_unref (node_info); +-} +- + static gboolean + gpm_kbd_backlight_evaluate_power_source_and_set (GpmKbdBacklight *backlight) + { +diff -uprN mate-power-manager-orig/src/gpm-manager.c mate-power-manager/src/gpm-manager.c +--- mate-power-manager-orig/src/gpm-manager.c 2013-10-03 13:56:55.000000000 +0200 ++++ mate-power-manager/src/gpm-manager.c 2013-10-13 20:05:11.449488592 +0200 +@@ -63,6 +63,7 @@ + #include "gpm-disks.h" + + #include "org.mate.PowerManager.Backlight.h" ++#include "org.mate.PowerManager.KbdBacklight.h" + + static void gpm_manager_finalize (GObject *object); + +@@ -1986,12 +1987,13 @@ gpm_manager_init (GpmManager *manager) + G_OBJECT (manager->priv->backlight)); + } + +- manager->priv->kbd_backlight = gpm_kbd_backlight_new (); +- if (manager->priv->kbd_backlight != NULL) { +- gpm_kbd_backlight_register_dbus (manager->priv->kbd_backlight, +- g_connection, +- NULL); +- } ++ manager->priv->kbd_backlight = gpm_kbd_backlight_new (); ++ if (manager->priv->kbd_backlight != NULL) { ++ dbus_g_object_type_install_info (GPM_TYPE_KBD_BACKLIGHT, ++ &dbus_glib_gpm_kbd_backlight_object_info); ++ dbus_g_connection_register_g_object (connection, GPM_DBUS_PATH_KBD_BACKLIGHT, ++ G_OBJECT (manager->priv->kbd_backlight)); ++ } + + manager->priv->idle = gpm_idle_new (); + g_signal_connect (manager->priv->idle, "idle-changed", +diff -uprN mate-power-manager-orig/src/Makefile.am mate-power-manager/src/Makefile.am +--- mate-power-manager-orig/src/Makefile.am 2013-10-03 13:56:55.000000000 +0200 ++++ mate-power-manager/src/Makefile.am 2013-10-13 20:10:17.374533688 +0200 +@@ -6,6 +6,7 @@ NULL = + EXTRA_DIST = \ + org.mate.PowerManager.xml \ + org.mate.PowerManager.Backlight.xml \ ++ org.mate.PowerManager.KbdBacklight.xml \ + gpm-marshal.list \ + $(NULL) + +@@ -270,6 +271,7 @@ endif + BUILT_SOURCES = \ + org.mate.PowerManager.h \ + org.mate.PowerManager.Backlight.h \ ++ org.mate.PowerManager.KbdBacklight.h \ + gpm-marshal.c \ + gpm-marshal.h \ + $(NULL) +@@ -295,6 +297,13 @@ org.mate.PowerManager.Backlight.h: org.m + --output=org.mate.PowerManager.Backlight.h \ + $(srcdir)/org.mate.PowerManager.Backlight.xml + ++org.mate.PowerManager.KbdBacklight.h: org.mate.PowerManager.KbdBacklight.xml ++ libtool --mode=execute dbus-binding-tool \ ++ --prefix=gpm_kbd_backlight \ ++ --mode=glib-server \ ++ --output=org.mate.PowerManager.KbdBacklight.h \ ++ $(srcdir)/org.mate.PowerManager.KbdBacklight.xml ++ + clean-local: + rm -f *~ + rm -f gpm-marshal.c gpm-marshal.h +diff -uprN mate-power-manager-orig/src/org.mate.PowerManager.KbdBacklight.xml mate-power-manager/src/org.mate.PowerManager.KbdBacklight.xml +--- mate-power-manager-orig/src/org.mate.PowerManager.KbdBacklight.xml 2013-10-13 20:12:11.556667787 +0200 ++++ mate-power-manager/src/org.mate.PowerManager.KbdBacklight.xml 2013-10-13 20:11:45.972413654 +0200 +@@ -0,0 +1,15 @@ ++<?xml version="1.0" encoding="UTF-8"?> ++<node name="/"> ++ <interface name="org.mate.PowerManager.KbdBacklight"> ++ <method name="GetBrightness"> ++ <arg type="u" name="percentage_brightness" direction="out"/> ++ </method> ++ <method name="SetBrightness"> ++ <arg type="u" name="percentage_brightness" direction="in"/> ++ </method> ++ <signal name="BrightnessChanged"> ++ <arg type="u" name="percentage_brightness" direction="out"/> ++ </signal> ++ </interface> ++</node> ++ diff --git a/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-improve-UPower1-support.patch b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-improve-UPower1-support.patch new file mode 100644 index 00000000..d3e9d855 --- /dev/null +++ b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-improve-UPower1-support.patch @@ -0,0 +1,102 @@ +diff --git a/src/gpm-engine.c b/src/gpm-engine.c +index e6c6bf2..fe458e3 100644 +--- a/src/gpm-engine.c ++++ b/src/gpm-engine.c +@@ -82,6 +82,9 @@ G_DEFINE_TYPE (GpmEngine, gpm_engine, G_TYPE_OBJECT) + + static UpDevice *gpm_engine_get_composite_device (GpmEngine *engine, UpDevice *original_device); + static UpDevice *gpm_engine_update_composite_device (GpmEngine *engine, UpDevice *original_device); ++#if UP_CHECK_VERSION (0, 99, 0) ++static void gpm_engine_device_changed_cb (UpDevice *device, GParamSpec *pspec, GpmEngine *engine); ++#endif + + typedef enum { + GPM_ENGINE_WARNING_NONE = 0, +@@ -757,6 +760,13 @@ gpm_engine_device_add (GpmEngine *engine, UpDevice *device) + g_object_get (composite, "state", &state, NULL); + g_object_set_data (G_OBJECT(composite), "engine-state-old", GUINT_TO_POINTER(state)); + } ++ ++#if UP_CHECK_VERSION (0, 99, 0) ++ if (kind == UP_DEVICE_KIND_BATTERY || kind == UP_DEVICE_KIND_UPS || kind == UP_DEVICE_KIND_LINE_POWER) ++ return; ++ g_signal_connect (device, "notify", G_CALLBACK (gpm_engine_device_changed_cb), engine); ++#endif ++ + } + + /** +@@ -851,19 +861,20 @@ gpm_engine_device_removed_cb (UpClient *client, UpDevice *device, GpmEngine *eng + **/ + static void + #if UP_CHECK_VERSION(0, 99, 0) +-gpm_engine_device_changed_cb (UpClient *client, GParamSpec *pspec, GpmEngine *engine) +-{ +- gpm_engine_recalculate_state (engine); +-} ++gpm_engine_device_changed_cb (UpDevice *device, GParamSpec *pspec, GpmEngine *engine) + #else + gpm_engine_device_changed_cb (UpClient *client, UpDevice *device, GpmEngine *engine) ++#endif + { ++#if !UP_CHECK_VERSION(0, 99, 0) + UpDeviceKind kind; ++#endif + UpDeviceState state; + UpDeviceState state_old; + GpmEngineWarning warning_old; + GpmEngineWarning warning; + ++#if !UP_CHECK_VERSION(0, 99, 0) + /* get device properties */ + g_object_get (device, + "kind", &kind, +@@ -874,6 +885,7 @@ gpm_engine_device_changed_cb (UpClient *client, UpDevice *device, GpmEngine *eng + egg_debug ("updating because %s changed", up_device_get_object_path (device)); + device = gpm_engine_update_composite_device (engine, device); + } ++#endif + + /* get device properties (may be composite) */ + g_object_get (device, +@@ -917,7 +929,6 @@ gpm_engine_device_changed_cb (UpClient *client, UpDevice *device, GpmEngine *eng + + gpm_engine_recalculate_state (engine); + } +-#endif + + /** + * gpm_engine_get_devices: +@@ -1042,10 +1053,7 @@ gpm_engine_init (GpmEngine *engine) + G_CALLBACK (gpm_engine_device_added_cb), engine); + g_signal_connect (engine->priv->client, "device-removed", + G_CALLBACK (gpm_engine_device_removed_cb), engine); +-#if UP_CHECK_VERSION(0, 99, 0) +- g_signal_connect (engine->priv->client, "notify", +- G_CALLBACK (gpm_engine_device_changed_cb), engine); +-#else ++#if !UP_CHECK_VERSION(0, 99, 0) + g_signal_connect (engine->priv->client, "device-changed", + G_CALLBACK (gpm_engine_device_changed_cb), engine); + #endif +@@ -1075,6 +1083,11 @@ gpm_engine_init (GpmEngine *engine) + #endif + + /* create a fake virtual composite battery */ ++#if UP_CHECK_VERSION(0, 99, 0) ++ engine->priv->battery_composite = up_client_get_display_device (engine->priv->client); ++ g_signal_connect (engine->priv->client, "notify", ++ G_CALLBACK (gpm_engine_device_changed_cb), engine); ++#else + engine->priv->battery_composite = up_device_new (); + g_object_set (engine->priv->battery_composite, + "kind", UP_DEVICE_KIND_BATTERY, +@@ -1083,6 +1096,7 @@ gpm_engine_init (GpmEngine *engine) + "power-supply", TRUE, + "is-present", TRUE, + NULL); ++#endif + + engine->priv->previous_icon = NULL; + engine->priv->previous_summary = NULL; + diff --git a/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-other-round-of-fixes-for-UPower-0.99-API-changes.patch b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-other-round-of-fixes-for-UPower-0.99-API-changes.patch new file mode 100644 index 00000000..83447294 --- /dev/null +++ b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-other-round-of-fixes-for-UPower-0.99-API-changes.patch @@ -0,0 +1,217 @@ +diff --git a/src/gpm-engine.c b/src/gpm-engine.c +index fe458e3..56d19e2 100644 +--- a/src/gpm-engine.c ++++ b/src/gpm-engine.c +@@ -84,7 +84,29 @@ static UpDevice *gpm_engine_get_composite_device (GpmEngine *engine, UpDevice *o + static UpDevice *gpm_engine_update_composite_device (GpmEngine *engine, UpDevice *original_device); + #if UP_CHECK_VERSION (0, 99, 0) + static void gpm_engine_device_changed_cb (UpDevice *device, GParamSpec *pspec, GpmEngine *engine); +-#endif ++ ++#define GPM_ENGINE_WARNING_NONE UP_DEVICE_LEVEL_NONE ++#define GPM_ENGINE_WARNING_DISCHARGING UP_DEVICE_LEVEL_DISCHARGING ++#define GPM_ENGINE_WARNING_LOW UP_DEVICE_LEVEL_LOW ++#define GPM_ENGINE_WARNING_CRITICAL UP_DEVICE_LEVEL_CRITICAL ++#define GPM_ENGINE_WARNING_ACTION UP_DEVICE_LEVEL_ACTION ++ ++/** ++ * gpm_engine_get_warning: ++ * ++ * This gets the possible engine state for the device according to the ++ * policy, which could be per-percent, or per-time. ++ * ++ * Return value: A GpmEngine state, e.g. GPM_ENGINE_WARNING_DISCHARGING ++ **/ ++static UpDeviceLevel ++gpm_engine_get_warning (GpmEngine *engine, UpDevice *device) ++{ ++ UpDeviceLevel warning; ++ g_object_get (device, "warning-level", &warning, NULL); ++ return warning; ++} ++#else + + typedef enum { + GPM_ENGINE_WARNING_NONE = 0, +@@ -226,6 +248,7 @@ gpm_engine_get_warning (GpmEngine *engine, UpDevice *device) + out: + return warning_type; + } ++#endif + + /** + * gpm_engine_get_summary: +@@ -282,12 +305,20 @@ gpm_engine_get_summary (GpmEngine *engine) + * Returns the icon + **/ + static gchar * ++#if UP_CHECK_VERSION (0, 99, 0) ++gpm_engine_get_icon_priv (GpmEngine *engine, UpDeviceKind device_kind, UpDeviceLevel warning, gboolean use_state) ++#else + gpm_engine_get_icon_priv (GpmEngine *engine, UpDeviceKind device_kind, GpmEngineWarning warning, gboolean use_state) ++#endif + { + guint i; + GPtrArray *array; + UpDevice *device; ++#if UP_CHECK_VERSION (0, 99, 0) ++ UpDeviceLevel warning_temp; ++#else + GpmEngineWarning warning_temp; ++#endif + UpDeviceKind kind; + UpDeviceState state; + gboolean is_present; +@@ -572,6 +603,9 @@ gpm_engine_device_check_capacity (GpmEngine *engine, UpDevice *device) + static UpDevice * + gpm_engine_get_composite_device (GpmEngine *engine, UpDevice *original_device) + { ++#if UP_CHECK_VERSION (0, 99, 0) ++ return engine->priv->battery_composite; ++#else + guint battery_devices = 0; + GPtrArray *array; + UpDevice *device; +@@ -601,6 +635,7 @@ gpm_engine_get_composite_device (GpmEngine *engine, UpDevice *original_device) + out: + /* return composite device or original device */ + return device; ++#endif + } + + /** +@@ -609,6 +644,18 @@ gpm_engine_get_composite_device (GpmEngine *engine, UpDevice *original_device) + static UpDevice * + gpm_engine_update_composite_device (GpmEngine *engine, UpDevice *original_device) + { ++#if UP_CHECK_VERSION (0, 99, 0) ++ gchar *text; ++ ++ text = up_device_to_text (engine->priv->battery_composite); ++ egg_debug ("composite:\n%s", text); ++ g_free (text); ++ ++ /* force update of icon */ ++ gpm_engine_recalculate_state_icon (engine); ++ ++ return engine->priv->battery_composite; ++#else + guint i; + gdouble percentage = 0.0; + gdouble energy = 0.0; +@@ -720,6 +767,7 @@ gpm_engine_update_composite_device (GpmEngine *engine, UpDevice *original_device + out: + /* return composite device or original device */ + return device; ++#endif + } + + /** +@@ -728,7 +776,11 @@ gpm_engine_update_composite_device (GpmEngine *engine, UpDevice *original_device + static void + gpm_engine_device_add (GpmEngine *engine, UpDevice *device) + { ++#if UP_CHECK_VERSION (0, 99, 0) ++ UpDeviceLevel warning; ++#else + GpmEngineWarning warning; ++#endif + UpDeviceState state; + UpDeviceKind kind; + UpDevice *composite; +@@ -762,9 +814,9 @@ gpm_engine_device_add (GpmEngine *engine, UpDevice *device) + } + + #if UP_CHECK_VERSION (0, 99, 0) +- if (kind == UP_DEVICE_KIND_BATTERY || kind == UP_DEVICE_KIND_UPS || kind == UP_DEVICE_KIND_LINE_POWER) +- return; + g_signal_connect (device, "notify", G_CALLBACK (gpm_engine_device_changed_cb), engine); ++ g_ptr_array_add (engine->priv->array, g_object_ref (device)); ++ gpm_engine_recalculate_state (engine); + #endif + + } +@@ -820,10 +872,14 @@ gpm_engine_coldplug_idle_cb (GpmEngine *engine) + static void + gpm_engine_device_added_cb (UpClient *client, UpDevice *device, GpmEngine *engine) + { ++#if UP_CHECK_VERSION (0, 99, 0) ++ gpm_engine_device_add (engine, device); ++#else + /* add to list */ + g_ptr_array_add (engine->priv->array, g_object_ref (device)); + + gpm_engine_recalculate_state (engine); ++#endif + } + + /** +@@ -866,15 +922,17 @@ gpm_engine_device_changed_cb (UpDevice *device, GParamSpec *pspec, GpmEngine *en + gpm_engine_device_changed_cb (UpClient *client, UpDevice *device, GpmEngine *engine) + #endif + { +-#if !UP_CHECK_VERSION(0, 99, 0) + UpDeviceKind kind; +-#endif + UpDeviceState state; + UpDeviceState state_old; ++#if UP_CHECK_VERSION(0, 99, 0) ++ UpDeviceLevel warning_old; ++ UpDeviceLevel warning; ++#else + GpmEngineWarning warning_old; + GpmEngineWarning warning; ++#endif + +-#if !UP_CHECK_VERSION(0, 99, 0) + /* get device properties */ + g_object_get (device, + "kind", &kind, +@@ -885,7 +943,6 @@ gpm_engine_device_changed_cb (UpClient *client, UpDevice *device, GpmEngine *eng + egg_debug ("updating because %s changed", up_device_get_object_path (device)); + device = gpm_engine_update_composite_device (engine, device); + } +-#endif + + /* get device properties (may be composite) */ + g_object_get (device, +@@ -1070,22 +1127,10 @@ gpm_engine_init (GpmEngine *engine) + g_signal_connect (engine->priv->phone, "device-refresh", + G_CALLBACK (phone_device_refresh_cb), engine); + +-#if UP_CHECK_VERSION(0, 99, 0) +- /* coldplug */ +- array = up_client_get_devices(engine->priv->client); +- if (array) { +- for (i = 0; i < array->len; i++) { +- UpDevice *device = g_ptr_array_index (array, i); +- gpm_engine_device_added_cb(engine->priv->client, device, engine); +- } +- g_ptr_array_free (array, TRUE); +- } +-#endif +- + /* create a fake virtual composite battery */ + #if UP_CHECK_VERSION(0, 99, 0) + engine->priv->battery_composite = up_client_get_display_device (engine->priv->client); +- g_signal_connect (engine->priv->client, "notify", ++ g_signal_connect (engine->priv->battery_composite, "notify", + G_CALLBACK (gpm_engine_device_changed_cb), engine); + #else + engine->priv->battery_composite = up_device_new (); +diff --git a/src/gpm-manager.c b/src/gpm-manager.c +index df84cac..09bd0c0 100644 +--- a/src/gpm-manager.c ++++ b/src/gpm-manager.c +@@ -1858,7 +1858,9 @@ gpm_manager_init (GpmManager *manager) + G_CALLBACK (gpm_manager_settings_changed_cb), manager); + manager->priv->client = up_client_new (); + #if UP_CHECK_VERSION(0, 99, 0) +- g_signal_connect (manager->priv->client, "notify", ++ g_signal_connect (manager->priv->client, "notify::lid-is-closed", ++ G_CALLBACK (gpm_manager_client_changed_cb), manager); ++ g_signal_connect (manager->priv->client, "notify::on-battery", + G_CALLBACK (gpm_manager_client_changed_cb), manager); + #else + g_signal_connect (manager->priv->client, "changed", + diff --git a/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-port-to-upower-0.99-API.patch b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-port-to-upower-0.99-API.patch new file mode 100644 index 00000000..72025758 --- /dev/null +++ b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-port-to-upower-0.99-API.patch @@ -0,0 +1,390 @@ +diff --git a/src/gpm-backlight.c b/src/gpm-backlight.c +index 1f1d834..d2938a4 100644 +--- a/src/gpm-backlight.c ++++ b/src/gpm-backlight.c +@@ -410,7 +410,11 @@ gpm_settings_key_changed_cb (GSettings *settings, const gchar *key, GpmBacklight + * Does the actions when the ac power source is inserted/removed. + **/ + static void ++#if UP_CHECK_VERSION(0, 99, 0) ++gpm_backlight_client_changed_cb (UpClient *client, GParamSpec *pspec, GpmBacklight *backlight) ++#else + gpm_backlight_client_changed_cb (UpClient *client, GpmBacklight *backlight) ++#endif + { + gpm_backlight_brightness_evaluate_and_set (backlight, FALSE, TRUE); + } +@@ -727,8 +731,13 @@ gpm_backlight_init (GpmBacklight *backlight) + + /* we use up_client for the ac-adapter-changed signal */ + backlight->priv->client = up_client_new (); ++#if UP_CHECK_VERSION(0, 99, 0) ++ g_signal_connect (backlight->priv->client, "notify", ++ G_CALLBACK (gpm_backlight_client_changed_cb), backlight); ++#else + g_signal_connect (backlight->priv->client, "changed", + G_CALLBACK (gpm_backlight_client_changed_cb), backlight); ++#endif + + /* gets caps */ + backlight->priv->can_dim = gpm_brightness_has_hw (backlight->priv->brightness); +diff --git a/src/gpm-button.c b/src/gpm-button.c +index 1e38173..b331cf6 100644 +--- a/src/gpm-button.c ++++ b/src/gpm-button.c +@@ -324,7 +324,11 @@ gpm_button_reset_time (GpmButton *button) + * gpm_button_client_changed_cb + **/ + static void ++#if UP_CHECK_VERSION(0, 99, 0) ++gpm_button_client_changed_cb (UpClient *client, GParamSpec *pspec, GpmButton *button) ++#else + gpm_button_client_changed_cb (UpClient *client, GpmButton *button) ++#endif + { + gboolean lid_is_closed; + +@@ -363,9 +367,13 @@ gpm_button_init (GpmButton *button) + + button->priv->client = up_client_new (); + button->priv->lid_is_closed = up_client_get_lid_is_closed (button->priv->client); ++#if UP_CHECK_VERSION(0, 99, 0) ++ g_signal_connect (button->priv->client, "notify", ++ G_CALLBACK (gpm_button_client_changed_cb), button); ++#else + g_signal_connect (button->priv->client, "changed", + G_CALLBACK (gpm_button_client_changed_cb), button); +- ++#endif + /* register the brightness keys */ + gpm_button_xevent_key (button, XF86XK_PowerOff, GPM_BUTTON_POWER); + #ifdef HAVE_XF86XK_SUSPEND +diff --git a/src/gpm-control.c b/src/gpm-control.c +index ec50136..0562d38 100644 +--- a/src/gpm-control.c ++++ b/src/gpm-control.c +@@ -289,10 +289,11 @@ gpm_control_suspend (GpmControl *control, GError **error) + } + g_object_unref(proxy); + } ++#if !UP_CHECK_VERSION(0, 99, 0) + else { + ret = up_client_suspend_sync (control->priv->client, NULL, error); + } +- ++#endif + egg_debug ("emitting resume"); + g_signal_emit (control, signals [RESUME], 0, GPM_CONTROL_ACTION_SUSPEND); + +@@ -399,10 +400,11 @@ gpm_control_hibernate (GpmControl *control, GError **error) + ret = TRUE; + } + } ++#if !UP_CHECK_VERSION(0, 99, 0) + else { + ret = up_client_hibernate_sync (control->priv->client, NULL, error); + } +- ++#endif + egg_debug ("emitting resume"); + g_signal_emit (control, signals [RESUME], 0, GPM_CONTROL_ACTION_HIBERNATE); + +diff --git a/src/gpm-engine.c b/src/gpm-engine.c +index 96a043e..e6c6bf2 100644 +--- a/src/gpm-engine.c ++++ b/src/gpm-engine.c +@@ -768,12 +768,14 @@ gpm_engine_coldplug_idle_cb (GpmEngine *engine) + guint i; + GPtrArray *array = NULL; + UpDevice *device; ++#if !UP_CHECK_VERSION(0, 99, 0) + gboolean ret; + GError *error = NULL; ++#endif + + g_return_val_if_fail (engine != NULL, FALSE); + g_return_val_if_fail (GPM_IS_ENGINE (engine), FALSE); +- ++#if !UP_CHECK_VERSION(0, 99, 0) + /* get devices from UPower */ + ret = up_client_enumerate_devices_sync (engine->priv->client, NULL, &error); + if (!ret) { +@@ -781,7 +783,7 @@ gpm_engine_coldplug_idle_cb (GpmEngine *engine) + g_error_free (error); + goto out; + } +- ++#endif + /* connected mobile phones */ + gpm_phone_coldplug (engine->priv->phone); + +@@ -793,7 +795,9 @@ gpm_engine_coldplug_idle_cb (GpmEngine *engine) + device = g_ptr_array_index (array, i); + gpm_engine_device_add (engine, device); + } ++#if !UP_CHECK_VERSION(0, 99, 0) + out: ++#endif + if (array != NULL) + g_ptr_array_unref (array); + /* never repeat */ +@@ -816,6 +820,22 @@ gpm_engine_device_added_cb (UpClient *client, UpDevice *device, GpmEngine *engin + * gpm_engine_device_removed_cb: + **/ + static void ++#if UP_CHECK_VERSION(0, 99, 0) ++gpm_engine_device_removed_cb (UpClient *client, const char *object_path, GpmEngine *engine) ++{ ++ guint i; ++ ++ for (i = 0; i < engine->priv->array->len; i++) { ++ UpDevice *device = g_ptr_array_index (engine->priv->array, i); ++ ++ if (g_strcmp0 (object_path, up_device_get_object_path (device)) == 0) { ++ g_ptr_array_remove_index (engine->priv->array, i); ++ break; ++ } ++ } ++ gpm_engine_recalculate_state (engine); ++} ++#else + gpm_engine_device_removed_cb (UpClient *client, UpDevice *device, GpmEngine *engine) + { + gboolean ret; +@@ -824,12 +844,18 @@ gpm_engine_device_removed_cb (UpClient *client, UpDevice *device, GpmEngine *eng + return; + gpm_engine_recalculate_state (engine); + } +- ++#endif + + /** + * gpm_engine_device_changed_cb: + **/ + static void ++#if UP_CHECK_VERSION(0, 99, 0) ++gpm_engine_device_changed_cb (UpClient *client, GParamSpec *pspec, GpmEngine *engine) ++{ ++ gpm_engine_recalculate_state (engine); ++} ++#else + gpm_engine_device_changed_cb (UpClient *client, UpDevice *device, GpmEngine *engine) + { + UpDeviceKind kind; +@@ -891,6 +917,7 @@ gpm_engine_device_changed_cb (UpClient *client, UpDevice *device, GpmEngine *eng + + gpm_engine_recalculate_state (engine); + } ++#endif + + /** + * gpm_engine_get_devices: +@@ -1003,7 +1030,10 @@ phone_device_refresh_cb (GpmPhone *phone, guint idx, GpmEngine *engine) + static void + gpm_engine_init (GpmEngine *engine) + { +- ++#if UP_CHECK_VERSION(0, 99, 0) ++ GPtrArray *array = NULL; ++ guint i; ++#endif + engine->priv = GPM_ENGINE_GET_PRIVATE (engine); + + engine->priv->array = g_ptr_array_new_with_free_func (g_object_unref); +@@ -1012,8 +1042,13 @@ gpm_engine_init (GpmEngine *engine) + G_CALLBACK (gpm_engine_device_added_cb), engine); + g_signal_connect (engine->priv->client, "device-removed", + G_CALLBACK (gpm_engine_device_removed_cb), engine); ++#if UP_CHECK_VERSION(0, 99, 0) ++ g_signal_connect (engine->priv->client, "notify", ++ G_CALLBACK (gpm_engine_device_changed_cb), engine); ++#else + g_signal_connect (engine->priv->client, "device-changed", + G_CALLBACK (gpm_engine_device_changed_cb), engine); ++#endif + + engine->priv->settings = g_settings_new (GPM_SETTINGS_SCHEMA); + g_signal_connect (engine->priv->settings, "changed", +@@ -1027,6 +1062,18 @@ gpm_engine_init (GpmEngine *engine) + g_signal_connect (engine->priv->phone, "device-refresh", + G_CALLBACK (phone_device_refresh_cb), engine); + ++#if UP_CHECK_VERSION(0, 99, 0) ++ /* coldplug */ ++ array = up_client_get_devices(engine->priv->client); ++ if (array) { ++ for (i = 0; i < array->len; i++) { ++ UpDevice *device = g_ptr_array_index (array, i); ++ gpm_engine_device_added_cb(engine->priv->client, device, engine); ++ } ++ g_ptr_array_free (array, TRUE); ++ } ++#endif ++ + /* create a fake virtual composite battery */ + engine->priv->battery_composite = up_device_new (); + g_object_set (engine->priv->battery_composite, +diff --git a/src/gpm-kbd-backlight.c b/src/gpm-kbd-backlight.c +index a439e94..3a0f6e6 100644 +--- a/src/gpm-kbd-backlight.c ++++ b/src/gpm-kbd-backlight.c +@@ -486,6 +486,9 @@ gpm_kbd_backlight_control_resume_cb (GpmControl *control, + **/ + static void + gpm_kbd_backlight_client_changed_cb (UpClient *client, ++#if UP_CHECK_VERSION(0, 99, 0) ++ GParamSpec *pspec, ++#endif + GpmKbdBacklight *backlight) + { + gpm_kbd_backlight_evaluate_power_source_and_set (backlight); +@@ -755,8 +758,13 @@ gpm_kbd_backlight_init (GpmKbdBacklight *backlight) + + /* Use upower for ac changed signal */ + backlight->priv->client = up_client_new (); ++#if UP_CHECK_VERSION(0, 99, 0) ++ g_signal_connect (backlight->priv->client, "notify", ++ G_CALLBACK (gpm_kbd_backlight_client_changed_cb), backlight); ++#else + g_signal_connect (backlight->priv->client, "changed", + G_CALLBACK (gpm_kbd_backlight_client_changed_cb), backlight); ++#endif + + backlight->priv->settings = g_settings_new (GPM_SETTINGS_SCHEMA); + //g_signal_connect (backlight->priv->settings, "changed", G_CALLBACK (gpm_settings_key_changed_cb), backlight); +diff --git a/src/gpm-manager.c b/src/gpm-manager.c +index c4d0530..df84cac 100644 +--- a/src/gpm-manager.c ++++ b/src/gpm-manager.c +@@ -971,7 +971,11 @@ gpm_manager_get_spindown_timeout (GpmManager *manager) + * gpm_manager_client_changed_cb: + **/ + static void ++#if UP_CHECK_VERSION(0, 99, 0) ++gpm_manager_client_changed_cb (UpClient *client, GParamSpec *pspec, GpmManager *manager) ++#else + gpm_manager_client_changed_cb (UpClient *client, GpmManager *manager) ++#endif + { + gboolean event_when_closed; + gint timeout; +@@ -1853,8 +1857,13 @@ gpm_manager_init (GpmManager *manager) + g_signal_connect (manager->priv->settings, "changed", + G_CALLBACK (gpm_manager_settings_changed_cb), manager); + manager->priv->client = up_client_new (); ++#if UP_CHECK_VERSION(0, 99, 0) ++ g_signal_connect (manager->priv->client, "notify", ++ G_CALLBACK (gpm_manager_client_changed_cb), manager); ++#else + g_signal_connect (manager->priv->client, "changed", + G_CALLBACK (gpm_manager_client_changed_cb), manager); ++#endif + + /* use libmatenotify */ + notify_init (GPM_NAME); +diff --git a/src/gpm-prefs-core.c b/src/gpm-prefs-core.c +index 7a2662d..6abb792 100644 +--- a/src/gpm-prefs-core.c ++++ b/src/gpm-prefs-core.c +@@ -811,7 +811,9 @@ gpm_prefs_init (GpmPrefs *prefs) + UpDevice *device; + UpDeviceKind kind; + GpmBrightness *brightness; ++#if !UP_CHECK_VERSION(0, 99, 0) + gboolean ret; ++#endif + guint i; + + GDBusProxy *proxy; +@@ -897,9 +899,11 @@ gpm_prefs_init (GpmPrefs *prefs) + else { + /* are we allowed to shutdown? */ + egg_console_kit_can_stop (prefs->priv->console, &prefs->priv->can_shutdown, NULL); ++#if !UP_CHECK_VERSION(0, 99, 0) + /* get values from UpClient */ + prefs->priv->can_suspend = up_client_get_can_suspend (prefs->priv->client); + prefs->priv->can_hibernate = up_client_get_can_hibernate (prefs->priv->client); ++#endif + } + + if (LOGIND_RUNNING()) { +@@ -953,14 +957,14 @@ gpm_prefs_init (GpmPrefs *prefs) + brightness = gpm_brightness_new (); + prefs->priv->has_lcd = gpm_brightness_has_hw (brightness); + g_object_unref (brightness); +- ++#if !UP_CHECK_VERSION(0, 99, 0) + /* get device list */ + ret = up_client_enumerate_devices_sync (prefs->priv->client, NULL, &error); + if (!ret) { + egg_warning ("failed to get device list: %s", error->message); + g_error_free (error); + } +- ++#endif + devices = up_client_get_devices (prefs->priv->client); + for (i=0; i<devices->len; i++) { + device = g_ptr_array_index (devices, i); +diff --git a/src/gpm-statistics.c b/src/gpm-statistics.c +index 98b5632..13489dc 100644 +--- a/src/gpm-statistics.c ++++ b/src/gpm-statistics.c +@@ -1236,6 +1236,12 @@ gpm_stats_device_added_cb (UpClient *client, UpDevice *device, gpointer user_dat + * gpm_stats_device_changed_cb: + **/ + static void ++#if UP_CHECK_VERSION(0, 99, 0) ++gpm_stats_device_changed_cb (UpClient *client, GParamSpec *pspec, gpointer user_data) ++{ ++ gpm_stats_button_update_ui(); ++} ++#else + gpm_stats_device_changed_cb (UpClient *client, UpDevice *device, gpointer user_data) + { + const gchar *object_path; +@@ -1246,6 +1252,7 @@ gpm_stats_device_changed_cb (UpClient *client, UpDevice *device, gpointer user_d + if (g_strcmp0 (current_device, object_path) == 0) + gpm_stats_update_info_data (device); + } ++#endif + + /** + * gpm_stats_device_removed_cb: +@@ -1794,11 +1801,12 @@ main (int argc, char *argv[]) + + wakeups = up_wakeups_new (); + g_signal_connect (wakeups, "data-changed", G_CALLBACK (gpm_stats_data_changed_cb), NULL); +- ++#if !UP_CHECK_VERSION(0, 99, 0) + /* coldplug */ + ret = up_client_enumerate_devices_sync (client, NULL, NULL); + if (!ret) + goto out; ++#endif + devices = up_client_get_devices (client); + + /* add devices in visually pleasing order */ +@@ -1814,7 +1822,11 @@ main (int argc, char *argv[]) + /* connect now the coldplug is done */ + g_signal_connect (client, "device-added", G_CALLBACK (gpm_stats_device_added_cb), NULL); + g_signal_connect (client, "device-removed", G_CALLBACK (gpm_stats_device_removed_cb), NULL); ++#if UP_CHECK_VERSION(0, 99, 0) ++ g_signal_connect (client, "notify", G_CALLBACK (gpm_stats_device_changed_cb), NULL); ++#else + g_signal_connect (client, "device-changed", G_CALLBACK (gpm_stats_device_changed_cb), NULL); ++#endif + + /* set current device */ + if (devices->len > 0) { +@@ -1854,8 +1866,9 @@ main (int argc, char *argv[]) + gtk_widget_show (widget); + + gtk_main (); +- ++#if !UP_CHECK_VERSION(0, 99, 0) + out: ++#endif + g_object_unref (settings); + g_object_unref (client); + g_object_unref (wakeups); + diff --git a/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-remove-battery-recall-logic.patch b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-remove-battery-recall-logic.patch new file mode 100644 index 00000000..6d462b93 --- /dev/null +++ b/mate-extra/mate-power-manager/files/mate-power-manager-1.8.0-r1-remove-battery-recall-logic.patch @@ -0,0 +1,263 @@ +diff --git a/data/org.mate.power-manager.gschema.xml.in b/data/org.mate.power-manager.gschema.xml.in +index adecce0..ca009b5 100644 +--- a/data/org.mate.power-manager.gschema.xml.in ++++ b/data/org.mate.power-manager.gschema.xml.in +@@ -211,11 +211,6 @@ + <_summary>Seconds of inactivity to spin down when on battery</_summary> + <_description>The number of seconds of inactivity to spin down the disks when on battery power.</_description> + </key> +- <key name="notify-perhaps-recall" type="b"> +- <default>true</default> +- <_summary>If we should show the recalled battery warning for a broken battery</_summary> +- <_description>If we should show the recalled battery warning for a broken battery. Set this to false only if you know your battery is okay.</_description> +- </key> + <key name="notify-low-capacity" type="b"> + <default>true</default> + <_summary>If we should show the low capacity warning for a broken battery</_summary> +diff --git a/src/gpm-common.h b/src/gpm-common.h +index ef20f88..303bdd1 100644 +--- a/src/gpm-common.h ++++ b/src/gpm-common.h +@@ -98,7 +98,6 @@ G_BEGIN_DECLS + #define GPM_SETTINGS_SPINDOWN_TIMEOUT_BATT "spindown-timeout-battery" + + /* notify */ +-#define GPM_SETTINGS_NOTIFY_PERHAPS_RECALL "notify-perhaps-recall" + #define GPM_SETTINGS_NOTIFY_LOW_CAPACITY "notify-low-capacity" + #define GPM_SETTINGS_NOTIFY_DISCHARGING "notify-discharging" + #define GPM_SETTINGS_NOTIFY_FULLY_CHARGED "notify-fully-charged" +diff --git a/src/gpm-engine.c b/src/gpm-engine.c +index 0f9d0c1..96a043e 100644 +--- a/src/gpm-engine.c ++++ b/src/gpm-engine.c +@@ -72,7 +72,6 @@ enum { + CHARGE_ACTION, + DISCHARGING, + LOW_CAPACITY, +- PERHAPS_RECALL, + LAST_SIGNAL + }; + +@@ -761,42 +760,6 @@ gpm_engine_device_add (GpmEngine *engine, UpDevice *device) + } + + /** +- * gpm_engine_check_recall: +- **/ +-static gboolean +-gpm_engine_check_recall (GpmEngine *engine, UpDevice *device) +-{ +- UpDeviceKind kind; +- gboolean recall_notice = FALSE; +- gchar *recall_vendor = NULL; +- gchar *recall_url = NULL; +- +- /* get device properties */ +- g_object_get (device, +- "kind", &kind, +- "recall-notice", &recall_notice, +- "recall-vendor", &recall_vendor, +- "recall-url", &recall_url, +- NULL); +- +- /* not battery */ +- if (kind != UP_DEVICE_KIND_BATTERY) +- goto out; +- +- /* no recall data */ +- if (!recall_notice) +- goto out; +- +- /* emit signal for manager */ +- egg_debug ("** EMIT: perhaps-recall"); +- g_signal_emit (engine, signals [PERHAPS_RECALL], 0, device, recall_vendor, recall_url); +-out: +- g_free (recall_vendor); +- g_free (recall_url); +- return recall_notice; +-} +- +-/** + * gpm_engine_coldplug_idle_cb: + **/ + static gboolean +@@ -829,7 +792,6 @@ gpm_engine_coldplug_idle_cb (GpmEngine *engine) + for (i=0;i<array->len;i++) { + device = g_ptr_array_index (array, i); + gpm_engine_device_add (engine, device); +- gpm_engine_check_recall (engine, device); + } + out: + if (array != NULL) +@@ -846,7 +808,6 @@ gpm_engine_device_added_cb (UpClient *client, UpDevice *device, GpmEngine *engin + { + /* add to list */ + g_ptr_array_add (engine->priv->array, g_object_ref (device)); +- gpm_engine_check_recall (engine, device); + + gpm_engine_recalculate_state (engine); + } +@@ -1134,14 +1095,6 @@ gpm_engine_class_init (GpmEngineClass *klass) + G_STRUCT_OFFSET (GpmEngineClass, low_capacity), + NULL, NULL, g_cclosure_marshal_VOID__POINTER, + G_TYPE_NONE, 1, G_TYPE_POINTER); +- signals [PERHAPS_RECALL] = +- g_signal_new ("perhaps-recall", +- G_TYPE_FROM_CLASS (object_class), +- G_SIGNAL_RUN_LAST, +- G_STRUCT_OFFSET (GpmEngineClass, perhaps_recall), +- NULL, NULL, gpm_marshal_VOID__POINTER_STRING_STRING, +- G_TYPE_NONE, +- 3, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_STRING); + signals [FULLY_CHARGED] = + g_signal_new ("fully-charged", + G_TYPE_FROM_CLASS (object_class), +diff --git a/src/gpm-engine.h b/src/gpm-engine.h +index be1ccd6..43f8956 100644 +--- a/src/gpm-engine.h ++++ b/src/gpm-engine.h +@@ -49,10 +49,6 @@ typedef struct + gchar *icon); + void (* summary_changed) (GpmEngine *engine, + gchar *status); +- void (* perhaps_recall) (GpmEngine *engine, +- UpDevice *device, +- const gchar *oem_vendor, +- const gchar *website); + void (* low_capacity) (GpmEngine *engine, + UpDevice *device); + void (* charge_low) (GpmEngine *engine, +diff --git a/src/gpm-manager.c b/src/gpm-manager.c +index 6ca9dea..c4d0530 100644 +--- a/src/gpm-manager.c ++++ b/src/gpm-manager.c +@@ -68,7 +68,6 @@ + static void gpm_manager_finalize (GObject *object); + + #define GPM_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GPM_TYPE_MANAGER, GpmManagerPrivate)) +-#define GPM_MANAGER_RECALL_DELAY 30 /* seconds */ + #define GPM_MANAGER_NOTIFY_TIMEOUT_NEVER 0 /* ms */ + #define GPM_MANAGER_NOTIFY_TIMEOUT_SHORT 10 * 1000 /* ms */ + #define GPM_MANAGER_NOTIFY_TIMEOUT_LONG 30 * 1000 /* ms */ +@@ -1092,111 +1091,6 @@ gpm_manager_settings_changed_cb (GSettings *settings, const gchar *key, GpmManag + } + + /** +- * gpm_manager_perhaps_recall_response_cb: +- */ +-static void +-gpm_manager_perhaps_recall_response_cb (GtkDialog *dialog, gint response_id, GpmManager *manager) +-{ +- GdkScreen *screen; +- GtkWidget *dialog_error; +- GError *error = NULL; +- gboolean ret; +- const gchar *website; +- +- /* don't show this again */ +- if (response_id == GTK_RESPONSE_CANCEL) { +- g_settings_set_boolean (manager->priv->settings, GPM_SETTINGS_NOTIFY_PERHAPS_RECALL, FALSE); +- goto out; +- } +- +- /* visit recall website */ +- if (response_id == GTK_RESPONSE_OK) { +- screen = gdk_screen_get_default(); +- website = (const gchar *) g_object_get_data (G_OBJECT (manager), "recall-oem-website"); +- ret = gtk_show_uri (screen, website, gtk_get_current_event_time (), &error); +- if (!ret) { +- dialog_error = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, +- "Failed to show url %s", error->message); +- gtk_dialog_run (GTK_DIALOG (dialog_error)); +- g_error_free (error); +- } +- goto out; +- } +-out: +- gtk_widget_destroy (GTK_WIDGET (dialog)); +- return; +-} +- +-/** +- * gpm_manager_perhaps_recall_delay_cb: +- */ +-static gboolean +-gpm_manager_perhaps_recall_delay_cb (GpmManager *manager) +-{ +- const gchar *oem_vendor; +- gchar *title = NULL; +- gchar *message = NULL; +- GtkWidget *dialog; +- +- oem_vendor = (const gchar *) g_object_get_data (G_OBJECT (manager), "recall-oem-vendor"); +- +- /* TRANSLATORS: the battery may be recalled by it's vendor */ +- title = g_strdup_printf ("%s: %s", GPM_NAME, _("Battery may be recalled")); +- message = g_strdup_printf (_("A battery in your computer may have been " +- "recalled by %s and you may be at risk.\n\n" +- "For more information visit the battery recall website."), oem_vendor); +- dialog = gtk_message_dialog_new_with_markup (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, +- GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, +- "<span size='larger'><b>%s</b></span>", title); +- +- gtk_message_dialog_format_secondary_markup (GTK_MESSAGE_DIALOG (dialog), "%s", message); +- +- /* TRANSLATORS: button text, visit the manufacturers recall website */ +- gtk_dialog_add_button (GTK_DIALOG (dialog), _("Visit recall website"), GTK_RESPONSE_OK); +- +- /* TRANSLATORS: button text, do not show this bubble again */ +- gtk_dialog_add_button (GTK_DIALOG (dialog), _("Do not show me this again"), GTK_RESPONSE_CANCEL); +- +- /* wait async for response */ +- gtk_widget_show (dialog); +- g_signal_connect (dialog, "response", G_CALLBACK (gpm_manager_perhaps_recall_response_cb), manager); +- +- g_free (title); +- g_free (message); +- +- /* never repeat */ +- return FALSE; +-} +- +-/** +- * gpm_manager_engine_perhaps_recall_cb: +- */ +-static void +-gpm_manager_engine_perhaps_recall_cb (GpmEngine *engine, UpDevice *device, gchar *oem_vendor, gchar *website, GpmManager *manager) +-{ +- gboolean ret; +- +- /* don't show when running under GDM */ +- if (g_getenv ("RUNNING_UNDER_GDM") != NULL) { +- egg_debug ("running under gdm, so no notification"); +- return; +- } +- +- /* already shown, and dismissed */ +- ret = g_settings_get_boolean (manager->priv->settings, GPM_SETTINGS_NOTIFY_PERHAPS_RECALL); +- if (!ret) { +- egg_debug ("Gsettings prevents notification: %s", GPM_SETTINGS_NOTIFY_PERHAPS_RECALL); +- return; +- } +- +- g_object_set_data_full (G_OBJECT (manager), "recall-oem-vendor", (gpointer) g_strdup (oem_vendor), (GDestroyNotify) g_free); +- g_object_set_data_full (G_OBJECT (manager), "recall-oem-website", (gpointer) g_strdup (website), (GDestroyNotify) g_free); +- +- /* delay by a few seconds so the panel can load */ +- g_timeout_add_seconds (GPM_MANAGER_RECALL_DELAY, (GSourceFunc) gpm_manager_perhaps_recall_delay_cb, manager); +-} +- +-/** + * gpm_manager_engine_icon_changed_cb: + */ + static void +@@ -2023,8 +1917,6 @@ gpm_manager_init (GpmManager *manager) + gpm_manager_sync_policy_sleep (manager); + + manager->priv->engine = gpm_engine_new (); +- g_signal_connect (manager->priv->engine, "perhaps-recall", +- G_CALLBACK (gpm_manager_engine_perhaps_recall_cb), manager); + g_signal_connect (manager->priv->engine, "low-capacity", + G_CALLBACK (gpm_manager_engine_low_capacity_cb), manager); + g_signal_connect (manager->priv->engine, "icon-changed", + diff --git a/mate-extra/mate-power-manager/mate-power-manager-1.8.0-r1.ebuild b/mate-extra/mate-power-manager/mate-power-manager-1.8.0-r1.ebuild new file mode 100644 index 00000000..b7eacc84 --- /dev/null +++ b/mate-extra/mate-power-manager/mate-power-manager-1.8.0-r1.ebuild @@ -0,0 +1,104 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/mate-extra/mate-power-manager/mate-power-manager-1.8.0-r1.ebuild,v 1.7 2014/09/19 17:04:21 ssuominen Exp $ + +EAPI="5" + +GCONF_DEBUG="no" + +inherit autotools gnome2 versionator + +MATE_BRANCH="$(get_version_component_range 1-2)" + +SRC_URI="http://pub.mate-desktop.org/releases/${MATE_BRANCH}/${P}.tar.xz" +DESCRIPTION="A session daemon for MATE that makes it easy to manage your laptop or desktop system" +HOMEPAGE="http://mate-desktop.org" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 x86" + +IUSE="+applet gnome-keyring man policykit test unique" + +# Interactive testsuite. +RESTRICT="test" + +COMMON_DEPEND="app-text/rarian:0 + >=dev-libs/dbus-glib-0.70:0 + >=dev-libs/glib-2.13:2 + >=media-libs/libcanberra-0.10:0[gtk] + >=sys-apps/dbus-1:0 + >=sys-power/upower-0.9.23 + >=x11-apps/xrandr-1.2:0 + >=x11-libs/cairo-1:0 + >=x11-libs/gdk-pixbuf-2.11:2 + >=x11-libs/gtk+-2.17.7:2 + x11-libs/libX11:0 + x11-libs/libXext:0 + x11-libs/libXrandr:0 + >=x11-libs/libnotify-0.7:0 + x11-libs/pango:0 + applet? ( >=mate-base/mate-panel-1.6:0 ) + gnome-keyring? ( >=gnome-base/gnome-keyring-3:0 ) + unique? ( >=dev-libs/libunique-0.9.4:1 )" + +RDEPEND="${COMMON_DEPEND} + policykit? ( >=mate-extra/mate-polkit-1.6:0 )" + +DEPEND="${COMMON_DEPEND} + app-text/docbook-xml-dtd:4.3 + >=app-text/scrollkeeper-dtd-1:1.0 + app-text/yelp-tools:0 + >=dev-util/intltool-0.35:* + x11-proto/randrproto:0 + >=x11-proto/xproto-7.0.15:0 + sys-devel/gettext:* + virtual/pkgconfig:* + man? ( app-text/docbook-sgml-utils:0 + >=app-text/docbook-sgml-dtd-4.3 )" + +src_prepare() { + # Upstreamed patches + epatch "${FILESDIR}"/${PF}-dbus_interface_keyboard_backlight_controls.patch + epatch "${FILESDIR}"/${PF}-avoid-levels-is-0-warning.patch + + # Upower 1.0 fixes + # https://github.com/mate-desktop/mate-power-manager/commit/220a4e0 + epatch "${FILESDIR}"/${PF}-remove-battery-recall-logic.patch + # https://github.com/mate-desktop/mate-power-manager/commit/d59f4b8 + epatch "${FILESDIR}"/${PF}-port-to-upower-0.99-API.patch + # https://github.com/mate-desktop/mate-power-manager/commit/1fb2870 + epatch "${FILESDIR}"/${PF}-improve-UPower1-support.patch + # https://github.com/mate-desktop/mate-power-manager/commit/8f734c6 + epatch "${FILESDIR}"/${PF}-other-round-of-fixes-for-UPower-0.99-API-changes.patch + + eautoreconf + gnome2_src_prepare + + # This needs to be after eautoreconf to prevent problems like bug #356277 + # Remove the docbook2man rules here since it's not handled by a proper + # parameter in configure.in. + if ! use man; then + sed -e 's:@HAVE_DOCBOOK2MAN_TRUE@.*::' -i man/Makefile.in \ + || die "docbook sed failed" + fi +} + +src_configure() { + gnome2_src_configure \ + $(use_enable applet applets) \ + $(use_enable test tests) \ + $(use_enable unique) \ + $(use_with gnome-keyring keyring) \ + --enable-compile-warnings=minimum \ + --enable-unique \ + --with-gtk=2.0 +} + +DOCS="AUTHORS HACKING NEWS README TODO" + +src_test() { + unset DBUS_SESSION_BUS_ADDRESS + + dbus-launch Xemake check || die "Test phase failed" +} |