- Update to 2.28.1, remove 7 patches now applied upstream
This commit is contained in:
parent
0445ab3763
commit
068875fea6
@ -1,34 +0,0 @@
|
||||
From 6558e661d22d9c2a70df8ce4bddcea083e61c328 Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Fri, 28 Aug 2009 05:43:14 +0200
|
||||
Subject: [PATCH] bell: increase bell rate limit from 1/s to 1/100ms
|
||||
|
||||
Right now metacity issues only 1 bell event per second. This is
|
||||
feels buggy when triggering multiple alarm sounds in a terminal.
|
||||
|
||||
This patch simple increases the limit to 1/100ms. 100ms is probably a
|
||||
good choice since the HIG recommends that all user reaction should
|
||||
happen within 100ms. With this applied pressing 'Left' in gnome-terminal
|
||||
feels much more responsive.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=498608
|
||||
---
|
||||
src/core/display.c | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/src/core/display.c b/src/core/display.c
|
||||
index b1661e3..bf22a9e 100644
|
||||
--- a/src/core/display.c
|
||||
+++ b/src/core/display.c
|
||||
@@ -2385,7 +2385,7 @@ event_callback (XEvent *event,
|
||||
{
|
||||
case XkbBellNotify:
|
||||
if (XSERVER_TIME_IS_BEFORE(display->last_bell_time,
|
||||
- xkb_ev->time - 1000))
|
||||
+ xkb_ev->time - 100))
|
||||
{
|
||||
display->last_bell_time = xkb_ev->time;
|
||||
meta_bell_notify (display, xkb_ev);
|
||||
--
|
||||
1.6.4
|
||||
|
||||
@ -1,42 +0,0 @@
|
||||
From 84e14cd8587c470e925e2fbf1a5a13c63686bcd4 Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Fri, 28 Aug 2009 05:38:17 +0200
|
||||
Subject: [PATCH] sound: ask libcanberra to cache alert/desktop switch sounds
|
||||
|
||||
These sounds are good candidates for caching in the sound server, to
|
||||
save a bit of CPU and make reaction faster. Hence, tell libcanberra to
|
||||
cache them.
|
||||
---
|
||||
src/core/bell.c | 1 +
|
||||
src/core/workspace.c | 1 +
|
||||
2 files changed, 2 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/src/core/bell.c b/src/core/bell.c
|
||||
index 92d1dbd..676ebac 100644
|
||||
--- a/src/core/bell.c
|
||||
+++ b/src/core/bell.c
|
||||
@@ -292,6 +292,7 @@ meta_bell_notify (MetaDisplay *display,
|
||||
ca_proplist_create (&p);
|
||||
ca_proplist_sets (p, CA_PROP_EVENT_ID, "bell-window-system");
|
||||
ca_proplist_sets (p, CA_PROP_EVENT_DESCRIPTION, _("Bell event"));
|
||||
+ ca_proplist_sets (p, CA_PROP_CANBERRA_CACHE_CONTROL, "permanent");
|
||||
|
||||
window = meta_display_lookup_x_window (display, xkb_bell_event->window);
|
||||
if (!window && (display->focus_window) && (display->focus_window->frame))
|
||||
diff --git a/src/core/display.c b/src/core/display.c
|
||||
index 55c374a..b1661e3 100644
|
||||
diff --git a/src/core/workspace.c b/src/core/workspace.c
|
||||
index a0170a6..063f867 100644
|
||||
--- a/src/core/workspace.c
|
||||
+++ b/src/core/workspace.c
|
||||
@@ -358,6 +358,7 @@ static void workspace_switch_sound(MetaWorkspace *from,
|
||||
ca_context_play(ca_gtk_context_get(), 1,
|
||||
CA_PROP_EVENT_ID, e,
|
||||
CA_PROP_EVENT_DESCRIPTION, "Desktop switched",
|
||||
+ CA_PROP_CANBERRA_CACHE_CONTROL, "permanent",
|
||||
NULL);
|
||||
|
||||
finish:
|
||||
--
|
||||
1.6.4
|
||||
|
||||
@ -1,30 +0,0 @@
|
||||
From 8132127a749b150d188631e03d36462838620a82 Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Fri, 28 Aug 2009 07:29:11 +0200
|
||||
Subject: [PATCH] tooltip: set window type hint for self-drawn tooltips to GDK_WINDOW_TYPE_HINT_TOOLTIP
|
||||
|
||||
libcanberra generates specific tooltip popup sounds and for that
|
||||
recognizes the tooltip windows by the GtkWindowTypeHint set for them.
|
||||
|
||||
This trivial patch simply sets the hint for the self-drawn tooltips
|
||||
metacity uses.
|
||||
---
|
||||
src/ui/fixedtip.c | 2 ++
|
||||
1 files changed, 2 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/src/ui/fixedtip.c b/src/ui/fixedtip.c
|
||||
index d2b95f2..31a6082 100644
|
||||
--- a/src/ui/fixedtip.c
|
||||
+++ b/src/ui/fixedtip.c
|
||||
@@ -71,6 +71,8 @@ meta_fixed_tip_show (Display *xdisplay, int screen_number,
|
||||
if (tip == NULL)
|
||||
{
|
||||
tip = gtk_window_new (GTK_WINDOW_POPUP);
|
||||
+ gtk_window_set_type_hint (GTK_WINDOW(tip), GDK_WINDOW_TYPE_HINT_TOOLTIP);
|
||||
+
|
||||
{
|
||||
GdkScreen *gdk_screen;
|
||||
GdkRectangle monitor;
|
||||
--
|
||||
1.6.4
|
||||
|
||||
@ -1,28 +0,0 @@
|
||||
From bf7327acb41a43b2bdeee9f0855455ebaef8b816 Mon Sep 17 00:00:00 2001
|
||||
From: Owen W. Taylor <otaylor@fishsoup.net>
|
||||
Date: Wed, 21 Oct 2009 21:11:46 -0400
|
||||
Subject: [PATCH] Add XFCE Terminal as a terminal
|
||||
|
||||
Include the XFCE terminal program 'Terminal' in the list of terminals.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=599262
|
||||
---
|
||||
src/core/window.c | 3 +++
|
||||
1 files changed, 3 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/src/core/window.c b/src/core/window.c
|
||||
index 0ae6a01..b481ccf 100644
|
||||
--- a/src/core/window.c
|
||||
+++ b/src/core/window.c
|
||||
@@ -1951,6 +1951,9 @@ __window_is_terminal (MetaWindow *window)
|
||||
/* mlterm ("multi lingual terminal emulator on X") */
|
||||
else if (strcmp (window->res_class, "mlterm") == 0)
|
||||
return TRUE;
|
||||
+ /* Terminal -- XFCE Terminal */
|
||||
+ else if (strcmp (window->res_class, "Terminal") == 0)
|
||||
+ return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
--
|
||||
1.6.5.rc2
|
||||
@ -1,43 +0,0 @@
|
||||
Patch from Travis Watkins
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=530702
|
||||
|
||||
diff -ru metacity-2.27.0/src/core/screen.c metacity-2.27.0.new/src/core/screen.c
|
||||
--- metacity-2.27.0/src/core/screen.c 2008-10-19 16:15:38.000000000 -0500
|
||||
+++ metacity-2.27.0.new/src/core/screen.c 2009-08-24 04:56:26.929023537 -0500
|
||||
@@ -2782,11 +2782,14 @@
|
||||
char selection[32];
|
||||
Atom a;
|
||||
|
||||
+ screen->wm_cm_timestamp = meta_display_get_current_time_roundtrip (
|
||||
+ screen->display);
|
||||
+
|
||||
g_snprintf (selection, sizeof(selection), "_NET_WM_CM_S%d", screen->number);
|
||||
meta_verbose ("Setting selection: %s\n", selection);
|
||||
a = XInternAtom (screen->display->xdisplay, selection, FALSE);
|
||||
XSetSelectionOwner (screen->display->xdisplay, a,
|
||||
- screen->wm_cm_selection_window, CurrentTime);
|
||||
+ screen->wm_cm_selection_window, screen->wm_cm_timestamp);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -2797,6 +2800,7 @@
|
||||
|
||||
g_snprintf (selection, sizeof(selection), "_NET_WM_CM_S%d", screen->number);
|
||||
a = XInternAtom (screen->display->xdisplay, selection, FALSE);
|
||||
- XSetSelectionOwner (screen->display->xdisplay, a, None, CurrentTime);
|
||||
+ XSetSelectionOwner (screen->display->xdisplay, a,
|
||||
+ None, screen->wm_cm_timestamp);
|
||||
}
|
||||
#endif /* HAVE_COMPOSITE_EXTENSIONS */
|
||||
diff -ru metacity-2.27.0/src/core/screen-private.h metacity-2.27.0.new/src/core/screen-private.h
|
||||
--- metacity-2.27.0/src/core/screen-private.h 2008-10-19 16:15:38.000000000 -0500
|
||||
+++ metacity-2.27.0.new/src/core/screen-private.h 2009-08-24 04:50:41.469785283 -0500
|
||||
@@ -113,6 +113,7 @@
|
||||
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
Window wm_cm_selection_window;
|
||||
+ guint32 wm_cm_timestamp;
|
||||
#endif
|
||||
|
||||
guint work_area_idle;
|
||||
|
||||
@ -1,12 +0,0 @@
|
||||
diff -up metacity-2.19.55/src/metacity.schemas.in.in.default-theme metacity-2.19.55/src/metacity.schemas.in.in
|
||||
--- metacity-2.19.55/src/metacity.schemas.in.in.default-theme 2007-08-12 00:19:23.000000000 -0400
|
||||
+++ metacity-2.19.55/src/metacity.schemas.in.in 2007-08-12 00:19:35.000000000 -0400
|
||||
@@ -212,7 +212,7 @@
|
||||
<applyto>/apps/metacity/general/theme</applyto>
|
||||
<owner>metacity</owner>
|
||||
<type>string</type>
|
||||
- <default>Clearlooks</default>
|
||||
+ <default>Nodoka</default>
|
||||
<locale name="C">
|
||||
<short>Current theme</short>
|
||||
<long>
|
||||
@ -1,46 +0,0 @@
|
||||
From 13f6daee4752ae5b1fb61447deaca43161d5b0bc Mon Sep 17 00:00:00 2001
|
||||
From: Owen W. Taylor <otaylor@fishsoup.net>
|
||||
Date: Thu, 17 Dec 2009 16:20:18 -0500
|
||||
Subject: [PATCH] Don't call IceCloseConnection() behind libSM's back
|
||||
|
||||
The ICE connection is opened by libSM; we can't just close it when
|
||||
we get an IOError on the ICE connection; instead call SmcCloseConnection()
|
||||
and mark the connection as closed. This will prevent a segfault if we
|
||||
exit out of the metacity main loop and get to meta_finalize().
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=604867
|
||||
---
|
||||
src/core/session.c | 10 +++++++---
|
||||
1 files changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/core/session.c b/src/core/session.c
|
||||
index 96d8d71..2ca15c9 100644
|
||||
--- a/src/core/session.c
|
||||
+++ b/src/core/session.c
|
||||
@@ -84,6 +84,7 @@ static char* load_state (const char *previous_save_file);
|
||||
static void regenerate_save_file (void);
|
||||
static const char* full_save_file (void);
|
||||
static void warn_about_lame_clients_and_finish_interact (gboolean shutdown);
|
||||
+static void disconnect (void);
|
||||
|
||||
/* This is called when data is available on an ICE connection. */
|
||||
static gboolean
|
||||
@@ -106,9 +107,12 @@ process_ice_messages (GIOChannel *channel,
|
||||
IcePointer context = IceGetConnectionContext (connection);
|
||||
#endif
|
||||
|
||||
- /* We were disconnected */
|
||||
- IceSetShutdownNegotiation (connection, False);
|
||||
- IceCloseConnection (connection);
|
||||
+ /* We were disconnected; close our connection to the
|
||||
+ * session manager, this will result in the ICE connection
|
||||
+ * being cleaned up, since it is owned by libSM.
|
||||
+ */
|
||||
+ disconnect ();
|
||||
+ meta_quit (META_EXIT_SUCCESS);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
--
|
||||
1.6.5.2
|
||||
|
||||
@ -1,41 +0,0 @@
|
||||
From 80bd3db7b6711c90af19c7ee17e86aea0b804d7c Mon Sep 17 00:00:00 2001
|
||||
From: Owen W. Taylor <otaylor@fishsoup.net>
|
||||
Date: Fri, 20 Nov 2009 10:08:20 -0500
|
||||
Subject: [PATCH] Don't crash for visual bell on undecorated window
|
||||
|
||||
When an XKB bell is sent on a undecorated window, flash the
|
||||
entire screen rather than crashing trying to flash the frame.
|
||||
|
||||
Based on patch by Daniel Erat
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=598231
|
||||
---
|
||||
src/core/bell.c | 7 ++++---
|
||||
1 files changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/core/bell.c b/src/core/bell.c
|
||||
index 1e01cd6..9904f97 100644
|
||||
--- a/src/core/bell.c
|
||||
+++ b/src/core/bell.c
|
||||
@@ -231,15 +231,16 @@ bell_flash_frame (MetaDisplay *display,
|
||||
|
||||
g_assert (xkb_ev->xkb_type == XkbBellNotify);
|
||||
window = meta_display_lookup_x_window (display, xkb_bell_event->window);
|
||||
- if (!window && (display->focus_window) && (display->focus_window->frame))
|
||||
+ if (!window)
|
||||
{
|
||||
window = display->focus_window;
|
||||
}
|
||||
- if (window)
|
||||
+ if (window && window->frame)
|
||||
{
|
||||
bell_flash_window_frame (window);
|
||||
}
|
||||
- else /* revert to fullscreen flash if there's no focussed window */
|
||||
+ else /* revert to fullscreen flash if there's no focused window or if it
|
||||
+ has no frame */
|
||||
{
|
||||
bell_flash_fullscreen (display, xkb_ev);
|
||||
}
|
||||
--
|
||||
1.6.5.2
|
||||
|
||||
@ -1,172 +0,0 @@
|
||||
--- metacity-2.25.144/configure.in 2009-02-01 15:33:42.000000000 -0500
|
||||
+++ hacked/configure.in 2009-02-09 21:15:32.000000000 -0500
|
||||
@@ -107,7 +107,7 @@
|
||||
fi
|
||||
changequote([,])dnl
|
||||
|
||||
-METACITY_PC_MODULES='gtk+-2.0 >= 2.10.0 pango >= 1.2.0'
|
||||
+METACITY_PC_MODULES='gtk+-2.0 >= 2.10.0 pango >= 1.2.0 libcanberra-gtk'
|
||||
|
||||
AC_ARG_ENABLE(gconf,
|
||||
AC_HELP_STRING([--disable-gconf],
|
||||
--- metacity-2.25.144/src/core/bell.c 2009-02-01 15:33:15.000000000 -0500
|
||||
+++ hacked/src/core/bell.c 2009-02-09 23:50:43.000000000 -0500
|
||||
@@ -52,6 +52,7 @@
|
||||
#include "bell.h"
|
||||
#include "screen-private.h"
|
||||
#include "prefs.h"
|
||||
+#include <canberra-gtk.h>
|
||||
|
||||
/**
|
||||
* Flashes one entire screen. This is done by making a window the size of the
|
||||
@@ -223,7 +224,7 @@
|
||||
*/
|
||||
static void
|
||||
bell_flash_frame (MetaDisplay *display,
|
||||
- XkbAnyEvent *xkb_ev)
|
||||
+ XkbAnyEvent *xkb_ev)
|
||||
{
|
||||
XkbBellNotifyEvent *xkb_bell_event = (XkbBellNotifyEvent *) xkb_ev;
|
||||
MetaWindow *window;
|
||||
@@ -280,6 +281,47 @@
|
||||
/* flash something */
|
||||
if (meta_prefs_get_visual_bell ())
|
||||
bell_visual_notify (display, xkb_ev);
|
||||
+
|
||||
+ if (meta_prefs_bell_is_audible ())
|
||||
+ {
|
||||
+ ca_proplist *p;
|
||||
+ XkbBellNotifyEvent *xkb_bell_event = (XkbBellNotifyEvent*) xkb_ev;
|
||||
+ MetaWindow *window;
|
||||
+ int res;
|
||||
+
|
||||
+ ca_proplist_create (&p);
|
||||
+ ca_proplist_sets (p, CA_PROP_EVENT_ID, "bell-window-system");
|
||||
+ ca_proplist_sets (p, CA_PROP_EVENT_DESCRIPTION, _("Bell event"));
|
||||
+ ca_proplist_sets (p, CA_PROP_MEDIA_ROLE, "event");
|
||||
+ ca_proplist_sets (p, CA_PROP_CANBERRA_ENABLE, "1");
|
||||
+
|
||||
+ window = meta_display_lookup_x_window (display, xkb_bell_event->window);
|
||||
+ if (!window && (display->focus_window) && (display->focus_window->frame))
|
||||
+ window = display->focus_window;
|
||||
+
|
||||
+ if (window)
|
||||
+ {
|
||||
+ ca_proplist_sets (p, CA_PROP_WINDOW_NAME, window->title);
|
||||
+ ca_proplist_setf (p, CA_PROP_WINDOW_X11_XID, "%lu", (unsigned long)window->xwindow);
|
||||
+ ca_proplist_sets (p, CA_PROP_APPLICATION_NAME, window->res_name);
|
||||
+ ca_proplist_setf (p, CA_PROP_APPLICATION_PROCESS_ID, "%d", window->net_wm_pid);
|
||||
+ }
|
||||
+
|
||||
+ /* First, we try to play a real sound ... */
|
||||
+ res = ca_context_play_full (ca_gtk_context_get (), 1, p, NULL, NULL);
|
||||
+
|
||||
+ ca_proplist_destroy (p);
|
||||
+
|
||||
+ if (res != CA_SUCCESS && res != CA_ERROR_DISABLED)
|
||||
+ {
|
||||
+ /* ...and in case that failed we use the classic X11 bell. */
|
||||
+ XkbForceDeviceBell (display->xdisplay,
|
||||
+ xkb_bell_event->device,
|
||||
+ xkb_bell_event->bell_class,
|
||||
+ xkb_bell_event->bell_id,
|
||||
+ xkb_bell_event->percent);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
#endif /* HAVE_XKB */
|
||||
|
||||
@@ -321,8 +363,7 @@
|
||||
XkbChangeEnabledControls (display->xdisplay,
|
||||
XkbUseCoreKbd,
|
||||
XkbAudibleBellMask,
|
||||
- meta_prefs_bell_is_audible ()
|
||||
- ? XkbAudibleBellMask : 0);
|
||||
+ 0);
|
||||
if (visual_bell_auto_reset) {
|
||||
XkbSetAutoResetControls (display->xdisplay,
|
||||
XkbAudibleBellMask,
|
||||
--- metacity-2.25.144/src/core/workspace.c 2009-02-01 15:33:15.000000000 -0500
|
||||
+++ hacked/src/core/workspace.c 2009-02-09 21:15:32.000000000 -0500
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "prefs.h"
|
||||
#include <X11/Xatom.h>
|
||||
#include <string.h>
|
||||
+#include <canberra-gtk.h>
|
||||
|
||||
void meta_workspace_queue_calc_showing (MetaWorkspace *workspace);
|
||||
static void set_active_space_hint (MetaScreen *screen);
|
||||
@@ -306,6 +307,63 @@
|
||||
}
|
||||
}
|
||||
|
||||
+static void workspace_switch_sound(MetaWorkspace *from,
|
||||
+ MetaWorkspace *to) {
|
||||
+
|
||||
+ MetaWorkspaceLayout layout;
|
||||
+ int i, nw, x, y, fi, ti;
|
||||
+ const char *e;
|
||||
+
|
||||
+ nw = meta_screen_get_n_workspaces(from->screen);
|
||||
+ fi = meta_workspace_index(from);
|
||||
+ ti = meta_workspace_index(to);
|
||||
+
|
||||
+ meta_screen_calc_workspace_layout(from->screen,
|
||||
+ nw,
|
||||
+ fi,
|
||||
+ &layout);
|
||||
+
|
||||
+ for (i = 0; i < nw; i++)
|
||||
+ if (layout.grid[i] == ti)
|
||||
+ break;
|
||||
+
|
||||
+ if (i >= nw) {
|
||||
+ meta_bug("Failed to find destination workspace in layout\n");
|
||||
+ goto finish;
|
||||
+ }
|
||||
+
|
||||
+ y = i / layout.cols;
|
||||
+ x = i % layout.cols;
|
||||
+
|
||||
+ /* We priorize horizontal over vertical movements here. The
|
||||
+ rationale for this is that horizontal movements are probably more
|
||||
+ interesting for sound effects because speakers are usually
|
||||
+ positioned on a horizontal and not a vertical axis. i.e. your
|
||||
+ spatial "Woosh!" effects will easily be able to encode horizontal
|
||||
+ movement but not such much vertical movement. */
|
||||
+
|
||||
+ if (x < layout.current_col)
|
||||
+ e = "desktop-switch-left";
|
||||
+ else if (x > layout.current_col)
|
||||
+ e = "desktop-switch-right";
|
||||
+ else if (y < layout.current_row)
|
||||
+ e = "desktop-switch-up";
|
||||
+ else if (y > layout.current_row)
|
||||
+ e = "desktop-switch-down";
|
||||
+ else {
|
||||
+ meta_bug("Uh, origin and destination workspace at same logic position!\n");
|
||||
+ goto finish;
|
||||
+ }
|
||||
+
|
||||
+ ca_context_play(ca_gtk_context_get(), 1,
|
||||
+ CA_PROP_EVENT_ID, e,
|
||||
+ CA_PROP_EVENT_DESCRIPTION, "Desktop switched",
|
||||
+ NULL);
|
||||
+
|
||||
+ finish:
|
||||
+ meta_screen_free_workspace_layout (&layout);
|
||||
+}
|
||||
+
|
||||
void
|
||||
meta_workspace_activate_with_focus (MetaWorkspace *workspace,
|
||||
MetaWindow *focus_this,
|
||||
@@ -320,6 +378,9 @@
|
||||
if (workspace->screen->active_workspace == workspace)
|
||||
return;
|
||||
|
||||
+ if (workspace->screen->active_workspace)
|
||||
+ workspace_switch_sound(workspace->screen->active_workspace, workspace);
|
||||
+
|
||||
/* Note that old can be NULL; e.g. when starting up */
|
||||
old = workspace->screen->active_workspace;
|
||||
|
||||
@ -1,64 +0,0 @@
|
||||
diff -up metacity-2.28.0/src/core/main.c.sigterm metacity-2.28.0/src/core/main.c
|
||||
--- metacity-2.28.0/src/core/main.c.sigterm 2009-11-05 14:53:40.599237201 -0500
|
||||
+++ metacity-2.28.0/src/core/main.c 2009-11-05 17:28:18.601486344 -0500
|
||||
@@ -67,6 +67,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <locale.h>
|
||||
#include <time.h>
|
||||
+#include <unistd.h>
|
||||
|
||||
/**
|
||||
* The exit code we'll return to our parent process when we eventually die.
|
||||
@@ -368,12 +369,25 @@ meta_finalize (void)
|
||||
meta_session_shutdown ();
|
||||
}
|
||||
|
||||
+static int sigterm_pipe_fds[2] = { -1, -1 };
|
||||
+
|
||||
static void
|
||||
sigterm_handler (int signum)
|
||||
{
|
||||
- meta_finalize ();
|
||||
+ if (sigterm_pipe_fds[1] >= 0)
|
||||
+ {
|
||||
+ ssize_t bytes_written;
|
||||
+ bytes_written = write (sigterm_pipe_fds[1], "", 1);
|
||||
+ close (sigterm_pipe_fds[1]);
|
||||
+ sigterm_pipe_fds[1] = -1;
|
||||
+ }
|
||||
+}
|
||||
|
||||
- exit (meta_exit_code);
|
||||
+static gboolean
|
||||
+on_sigterm (void)
|
||||
+{
|
||||
+ meta_quit (META_EXIT_SUCCESS);
|
||||
+ return FALSE;
|
||||
}
|
||||
|
||||
static guint sigchld_signal_id = 0;
|
||||
@@ -421,6 +434,7 @@ main (int argc, char **argv)
|
||||
"Pango", "GLib-GObject", "GThread"
|
||||
};
|
||||
guint i;
|
||||
+ GIOChannel *channel;
|
||||
|
||||
if (!g_thread_supported ())
|
||||
g_thread_init (NULL);
|
||||
@@ -443,6 +457,16 @@ main (int argc, char **argv)
|
||||
g_strerror (errno));
|
||||
#endif
|
||||
|
||||
+ if (pipe (sigterm_pipe_fds) != 0)
|
||||
+ g_printerr ("Failed to create SIGTERM pipe: %s\n",
|
||||
+ g_strerror (errno));
|
||||
+
|
||||
+ channel = g_io_channel_unix_new (sigterm_pipe_fds[0]);
|
||||
+ g_io_channel_set_flags (channel, G_IO_FLAG_NONBLOCK, NULL);
|
||||
+ g_io_add_watch (channel, G_IO_IN, (GIOFunc) on_sigterm, NULL);
|
||||
+ g_io_channel_set_close_on_unref (channel, TRUE);
|
||||
+ g_io_channel_unref (channel);
|
||||
+
|
||||
act.sa_handler = &sigterm_handler;
|
||||
if (sigaction (SIGTERM, &act, NULL) < 0)
|
||||
g_printerr ("Failed to register SIGTERM handler: %s\n",
|
||||
@ -1,11 +0,0 @@
|
||||
diff -up metacity-2.25.144/src/core/bell.c.no-more-brokkoli metacity-2.25.144/src/core/bell.c
|
||||
--- metacity-2.25.144/src/core/bell.c.no-more-brokkoli 2009-02-21 12:04:32.447950258 -0500
|
||||
+++ metacity-2.25.144/src/core/bell.c 2009-02-21 12:04:41.191943469 -0500
|
||||
@@ -293,7 +293,6 @@ meta_bell_notify (MetaDisplay *display,
|
||||
ca_proplist_sets (p, CA_PROP_EVENT_ID, "bell-window-system");
|
||||
ca_proplist_sets (p, CA_PROP_EVENT_DESCRIPTION, _("Bell event"));
|
||||
ca_proplist_sets (p, CA_PROP_MEDIA_ROLE, "event");
|
||||
- ca_proplist_sets (p, CA_PROP_CANBERRA_ENABLE, "1");
|
||||
|
||||
window = meta_display_lookup_x_window (display, xkb_bell_event->window);
|
||||
if (!window && (display->focus_window) && (display->focus_window->frame))
|
||||
@ -1,142 +0,0 @@
|
||||
From b625ec30d99b2dcf86d8fa78b09f6d04dce3a6e0 Mon Sep 17 00:00:00 2001
|
||||
From: Tomeu Vizoso <tomeu@sugarlabs.org>
|
||||
Date: Fri, 19 Jun 2009 15:30:37 +0000
|
||||
Subject: Add a switch to disable autofullscreen'ing maximized windows without decorations
|
||||
|
||||
---
|
||||
diff --git a/src/core/constraints.c b/src/core/constraints.c
|
||||
index 800b293..a060d20 100644
|
||||
--- a/src/core/constraints.c
|
||||
+++ b/src/core/constraints.c
|
||||
@@ -27,6 +27,7 @@
|
||||
#include "constraints.h"
|
||||
#include "workspace.h"
|
||||
#include "place.h"
|
||||
+#include "prefs.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
@@ -424,7 +425,8 @@ setup_constraint_info (ConstraintInfo *info,
|
||||
/* Workaround braindead legacy apps that don't know how to
|
||||
* fullscreen themselves properly.
|
||||
*/
|
||||
- if (meta_rectangle_equal (new, &xinerama_info->rect) &&
|
||||
+ if (meta_prefs_get_force_fullscreen() &&
|
||||
+ meta_rectangle_equal (new, &xinerama_info->rect) &&
|
||||
window->has_fullscreen_func &&
|
||||
!window->fullscreen)
|
||||
{
|
||||
diff --git a/src/core/main.c b/src/core/main.c
|
||||
index 6c36f10..a36a396 100644
|
||||
--- a/src/core/main.c
|
||||
+++ b/src/core/main.c
|
||||
@@ -233,6 +233,7 @@ typedef struct
|
||||
gboolean sync;
|
||||
gboolean composite;
|
||||
gboolean no_composite;
|
||||
+ gboolean no_force_fullscreen;
|
||||
} MetaArguments;
|
||||
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
@@ -314,6 +315,12 @@ meta_parse_options (int *argc, char ***argv,
|
||||
N_("Turn compositing off"),
|
||||
NULL
|
||||
},
|
||||
+ {
|
||||
+ "no-force-fullscreen", 0, COMPOSITE_OPTS_FLAGS, G_OPTION_ARG_NONE,
|
||||
+ &my_args.no_force_fullscreen,
|
||||
+ N_("Don't make fullscreen windows that are maximized and have no decorations"),
|
||||
+ NULL
|
||||
+ },
|
||||
{NULL}
|
||||
};
|
||||
GOptionContext *ctx;
|
||||
@@ -584,6 +591,9 @@ main (int argc, char **argv)
|
||||
if (meta_args.composite || meta_args.no_composite)
|
||||
meta_prefs_set_compositing_manager (meta_args.composite);
|
||||
|
||||
+ if (meta_args.no_force_fullscreen)
|
||||
+ meta_prefs_set_force_fullscreen (FALSE);
|
||||
+
|
||||
if (!meta_display_open ())
|
||||
meta_exit (META_EXIT_ERROR);
|
||||
|
||||
diff --git a/src/core/prefs.c b/src/core/prefs.c
|
||||
index 1f4fe41..6e41b3c 100644
|
||||
--- a/src/core/prefs.c
|
||||
+++ b/src/core/prefs.c
|
||||
@@ -95,6 +95,7 @@ static char *cursor_theme = NULL;
|
||||
static int cursor_size = 24;
|
||||
static gboolean compositing_manager = FALSE;
|
||||
static gboolean resize_with_right_button = FALSE;
|
||||
+static gboolean force_fullscreen = TRUE;
|
||||
|
||||
static MetaVisualBellType visual_bell_type = META_VISUAL_BELL_FULLSCREEN_FLASH;
|
||||
static MetaButtonLayout button_layout;
|
||||
@@ -1751,6 +1752,9 @@ meta_preference_to_string (MetaPreference pref)
|
||||
|
||||
case META_PREF_RESIZE_WITH_RIGHT_BUTTON:
|
||||
return "RESIZE_WITH_RIGHT_BUTTON";
|
||||
+
|
||||
+ case META_PREF_FORCE_FULLSCREEN:
|
||||
+ return "FORCE_FULLSCREEN";
|
||||
}
|
||||
|
||||
return "(unknown)";
|
||||
@@ -2737,6 +2741,12 @@ meta_prefs_get_mouse_button_menu (void)
|
||||
return resize_with_right_button ? 2: 3;
|
||||
}
|
||||
|
||||
+gboolean
|
||||
+meta_prefs_get_force_fullscreen (void)
|
||||
+{
|
||||
+ return force_fullscreen;
|
||||
+}
|
||||
+
|
||||
void
|
||||
meta_prefs_set_compositing_manager (gboolean whether)
|
||||
{
|
||||
@@ -2797,3 +2807,10 @@ init_button_layout(void)
|
||||
};
|
||||
|
||||
#endif
|
||||
+
|
||||
+void
|
||||
+meta_prefs_set_force_fullscreen (gboolean whether)
|
||||
+{
|
||||
+ force_fullscreen = whether;
|
||||
+}
|
||||
+
|
||||
diff --git a/src/include/prefs.h b/src/include/prefs.h
|
||||
index 2f1ce8e..a4193ff 100644
|
||||
--- a/src/include/prefs.h
|
||||
+++ b/src/include/prefs.h
|
||||
@@ -59,7 +59,8 @@ typedef enum
|
||||
META_PREF_CURSOR_THEME,
|
||||
META_PREF_CURSOR_SIZE,
|
||||
META_PREF_COMPOSITING_MANAGER,
|
||||
- META_PREF_RESIZE_WITH_RIGHT_BUTTON
|
||||
+ META_PREF_RESIZE_WITH_RIGHT_BUTTON,
|
||||
+ META_PREF_FORCE_FULLSCREEN
|
||||
} MetaPreference;
|
||||
|
||||
typedef void (* MetaPrefsChangedFunc) (MetaPreference pref,
|
||||
@@ -114,6 +115,7 @@ void meta_prefs_change_workspace_name (int i,
|
||||
const char* meta_prefs_get_cursor_theme (void);
|
||||
int meta_prefs_get_cursor_size (void);
|
||||
gboolean meta_prefs_get_compositing_manager (void);
|
||||
+gboolean meta_prefs_get_force_fullscreen (void);
|
||||
|
||||
/**
|
||||
* Sets whether the compositor is turned on.
|
||||
@@ -122,6 +124,8 @@ gboolean meta_prefs_get_compositing_manager (void);
|
||||
*/
|
||||
void meta_prefs_set_compositing_manager (gboolean whether);
|
||||
|
||||
+void meta_prefs_set_force_fullscreen (gboolean whether);
|
||||
+
|
||||
/* XXX FIXME This should be x-macroed, but isn't yet because it would be
|
||||
* difficult (or perhaps impossible) to add the suffixes using the current
|
||||
* system. It needs some more thought, perhaps after the current system
|
||||
--
|
||||
cgit v0.8.2
|
||||
@ -1,109 +0,0 @@
|
||||
--- trunk/src/core/window-props.c 2009/03/11 14:21:33 4190
|
||||
+++ trunk/src/core/window-props.c 2009/03/12 01:09:41 4191
|
||||
@@ -73,12 +73,6 @@
|
||||
ReloadValueFunc reload_func;
|
||||
} MetaWindowPropHooks;
|
||||
|
||||
-static void init_prop_value (MetaDisplay *display,
|
||||
- Atom property,
|
||||
- MetaPropValue *value);
|
||||
-static void reload_prop_value (MetaWindow *window,
|
||||
- MetaPropValue *value,
|
||||
- gboolean initial);
|
||||
static MetaWindowPropHooks* find_hooks (MetaDisplay *display,
|
||||
Atom property);
|
||||
|
||||
@@ -128,23 +122,34 @@
|
||||
g_return_if_fail (n_properties > 0);
|
||||
|
||||
values = g_new0 (MetaPropValue, n_properties);
|
||||
-
|
||||
- i = 0;
|
||||
- while (i < n_properties)
|
||||
+
|
||||
+ for (i=0; i<n_properties; i++)
|
||||
{
|
||||
- init_prop_value (window->display, properties[i], &values[i]);
|
||||
- ++i;
|
||||
+ MetaWindowPropHooks *hooks = find_hooks (window->display,
|
||||
+ properties[i]);
|
||||
+
|
||||
+ if (!hooks || hooks->type == META_PROP_VALUE_INVALID)
|
||||
+ {
|
||||
+ values[i].type = META_PROP_VALUE_INVALID;
|
||||
+ values[i].atom = None;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ values[i].type = hooks->type;
|
||||
+ values[i].atom = properties[i];
|
||||
+ }
|
||||
}
|
||||
|
||||
meta_prop_get_values (window->display, xwindow,
|
||||
values, n_properties);
|
||||
|
||||
- i = 0;
|
||||
- while (i < n_properties)
|
||||
+ for (i=0; i<n_properties; i++)
|
||||
{
|
||||
- reload_prop_value (window, &values[i], initial);
|
||||
-
|
||||
- ++i;
|
||||
+ MetaWindowPropHooks *hooks = find_hooks (window->display,
|
||||
+ properties[i]);
|
||||
+
|
||||
+ if (hooks && hooks->reload_func != NULL)
|
||||
+ (* hooks->reload_func) (window, &values[i], initial);
|
||||
}
|
||||
|
||||
meta_prop_free_values (values, n_properties);
|
||||
@@ -152,37 +157,6 @@
|
||||
g_free (values);
|
||||
}
|
||||
|
||||
-/* Fill in the MetaPropValue used to get the value of "property" */
|
||||
-static void
|
||||
-init_prop_value (MetaDisplay *display,
|
||||
- Atom property,
|
||||
- MetaPropValue *value)
|
||||
-{
|
||||
- MetaWindowPropHooks *hooks = find_hooks (display, property);
|
||||
-
|
||||
- if (!hooks || hooks->type == META_PROP_VALUE_INVALID)
|
||||
- {
|
||||
- value->type = META_PROP_VALUE_INVALID;
|
||||
- value->atom = None;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- value->type = hooks->type;
|
||||
- value->atom = property;
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-static void
|
||||
-reload_prop_value (MetaWindow *window,
|
||||
- MetaPropValue *value,
|
||||
- gboolean initial)
|
||||
-{
|
||||
- MetaWindowPropHooks *hooks = find_hooks (window->display, value->atom);
|
||||
-
|
||||
- if (hooks && hooks->reload_func != NULL)
|
||||
- (* hooks->reload_func) (window, value, initial);
|
||||
-}
|
||||
-
|
||||
static void
|
||||
reload_wm_client_machine (MetaWindow *window,
|
||||
MetaPropValue *value,
|
||||
@@ -1566,6 +1540,9 @@
|
||||
display->prop_hooks_table = NULL;
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * Finds the hooks for a particular property.
|
||||
+ */
|
||||
static MetaWindowPropHooks*
|
||||
find_hooks (MetaDisplay *display,
|
||||
Atom property)
|
||||
|
||||
@ -2,8 +2,8 @@
|
||||
|
||||
Summary: Unobtrusive window manager
|
||||
Name: metacity
|
||||
Version: 2.28.0
|
||||
Release: 15%{?dist}
|
||||
Version: 2.28.1
|
||||
Release: 1%{?dist}
|
||||
URL: http://download.gnome.org/sources/metacity/
|
||||
Source0: http://download.gnome.org/sources/metacity/2.28/metacity-%{version}.tar.bz2
|
||||
# http://bugzilla.gnome.org/show_bug.cgi?id=558723
|
||||
@ -12,12 +12,6 @@ Patch4: stop-spamming-xsession-errors.patch
|
||||
Patch5: dnd-keynav.patch
|
||||
# http://bugzilla.gnome.org/show_bug.cgi?id=588119
|
||||
Patch6: Should-set-RestartStyleHint-to-RestartIfRunning-when.patch
|
||||
# http://bugzilla.gnome.org/show_bug.cgi?id=593355
|
||||
Patch7: 0001-bell-increase-bell-rate-limit-from-1-s-to-1-100ms.patch
|
||||
# http://bugzilla.gnome.org/show_bug.cgi?id=593356
|
||||
Patch8: 0001-sound-ask-libcanberra-to-cache-alert-desktop-switch-.patch
|
||||
# http://bugzilla.gnome.org/show_bug.cgi?id=593358
|
||||
Patch9: 0001-tooltip-set-window-type-hint-for-self-drawn-tooltips.patch
|
||||
# http://bugzilla.gnome.org/show_bug.cgi?id=336750
|
||||
Patch10: screenshot-forkbomb.patch
|
||||
|
||||
@ -25,17 +19,12 @@ Patch10: screenshot-forkbomb.patch
|
||||
Patch11: workspaces.patch
|
||||
Patch12: fresh-tooltips.patch
|
||||
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=600864
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=533239
|
||||
Patch13: metacity-dont-do-bad-stuff-on-sigterm.patch
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=567528
|
||||
Patch14: Allow-explicit-raises-from-same-client-not-just-sa.patch
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=445447
|
||||
Patch15: Allow-applications-to-raise-windows-when-raise_on_cl.patch
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=598995
|
||||
Patch16: Dont-focus-ancestor-window-on-a-different-workspac.patch
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=599262
|
||||
Patch17: Add-XFCE-Terminal-as-a-terminal.patch
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=599097
|
||||
Patch18: For-mouse-and-sloppy-focus-return-to-mouse-mode-on.patch
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=599248
|
||||
@ -44,16 +33,10 @@ Patch19: Add-nofocuswindows-preference-to-list-windows-that.patch
|
||||
Patch20: Add-a-newwindowsalwaysontop-preference.patch
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=577576
|
||||
Patch21: Dont-warn-about-a-missing-session-file.patch
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=530702
|
||||
Patch22: cm-selection-timestamp.patch
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=598231
|
||||
Patch23: metacity-2.28-visual-bell.patch
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=559816
|
||||
Patch24: metacity-2.28-empty-keybindings.patch
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=604319
|
||||
Patch25: metacity-2.28-xioerror-unknown-display.patch
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=604867
|
||||
Patch26: metacity-2.28-IceCloseConnection.patch
|
||||
|
||||
License: GPLv2+
|
||||
Group: User Interface/Desktops
|
||||
@ -116,27 +99,19 @@ API. This package exists purely for technical reasons.
|
||||
%patch4 -p1 -b .stop-spamming-xsession-errors
|
||||
%patch5 -p1 -b .dnd-keynav
|
||||
%patch6 -p1 -b .restart-if-running
|
||||
%patch7 -p1 -b .bell
|
||||
%patch8 -p1 -b .sound-cache
|
||||
%patch9 -p1 -b .tooltip
|
||||
%patch10 -p1 -b .screenshot-forkbomb
|
||||
%patch11 -p1 -b .workspaces
|
||||
%patch12 -p1 -b .fresh-tooltips
|
||||
%patch13 -p1 -b .sigterm
|
||||
|
||||
%patch14 -p1 -b .raises-from-same-client
|
||||
%patch15 -p1 -b .raise-on-click-stacking
|
||||
%patch16 -p1 -b .focus-different-workspace
|
||||
%patch17 -p1 -b .xfce-terminal
|
||||
%patch18 -p1 -b .focus-on-motion
|
||||
%patch19 -p1 -b .no-focus-windows
|
||||
%patch20 -p1 -b .always-on-top
|
||||
%patch21 -p1 -b .missing-session
|
||||
%patch22 -p1 -b .cm-selection-timestamp
|
||||
%patch23 -p1 -b .visual-bell
|
||||
%patch24 -p1 -b .empty-keybindings
|
||||
%patch25 -p1 -b .xioerror-unknown-display
|
||||
%patch26 -p1 -b .IceCloseConnection
|
||||
|
||||
# force regeneration
|
||||
rm src/metacity.schemas
|
||||
@ -244,6 +219,9 @@ fi
|
||||
%{_mandir}/man1/metacity-window-demo.1.gz
|
||||
|
||||
%changelog
|
||||
* Wed Jan 27 2010 Owen Taylor <otaylor@redhat.com> - 2.28.1-1
|
||||
- Update to 2.28.1, remove 7 patches now applied upstream
|
||||
|
||||
* Sun Jan 3 2010 Owen Taylor <otaylor@redhat.com> - 2.28.0-15
|
||||
- Fix crash in _IceTransClose (rhbz 551994)
|
||||
The previous patch for rhbz 539905 didn't actually fix the
|
||||
|
||||
Loading…
Reference in New Issue
Block a user