Update x11/fluxbox to 1.3.5

ok gonzalo@
This commit is contained in:
bcallah 2013-04-16 15:27:03 +00:00
parent 04571668b9
commit 5fa96be09d
11 changed files with 27 additions and 387 deletions

View File

@ -1,10 +1,8 @@
# $OpenBSD: Makefile,v 1.73 2013/03/21 08:48:56 ajacoutot Exp $
# $OpenBSD: Makefile,v 1.74 2013/04/16 15:27:03 bcallah Exp $
COMMENT= window manager based on the original Blackbox code
DISTNAME= fluxbox-1.3.3
REVISION= 3
DISTNAME= fluxbox-1.3.5
CATEGORIES= x11
@ -20,7 +18,7 @@ PERMIT_PACKAGE_CDROM= Yes
MODULES= converters/libiconv
WANTLIB= ICE Imlib2 SM X11 Xext Xft Xinerama \
Xpm Xrandr Xrender c expat fontconfig \
Xpm Xrandr Xrender c fontconfig \
freetype fribidi m stdc++ z
CONFIGURE_STYLE= gnu

View File

@ -1,2 +1,2 @@
SHA256 (fluxbox-1.3.3.tar.gz) = LqpVlZJOn9saQ4zILFhRW/sbPZqAvOT4nQ+lmugZ7n4=
SIZE (fluxbox-1.3.3.tar.gz) = 1074561
SHA256 (fluxbox-1.3.5.tar.gz) = mdaID4VS/SqP9M38eqev9Y8K4EqWLMrEEt0mzYhFW5c=
SIZE (fluxbox-1.3.5.tar.gz) = 1125565

View File

@ -1,16 +0,0 @@
$OpenBSD: patch-src_FbTk_FbTime_cc,v 1.1 2013/01/11 08:11:26 dcoppa Exp $
Compile fix: forgotten parentheses around value
(upstream git commit f587cc9e7e8c40bce778ffc0811a3a6c29107b85)
--- src/FbTk/FbTime.cc.orig Thu Jan 10 11:32:48 2013
+++ src/FbTk/FbTime.cc Thu Jan 10 11:36:11 2013
@@ -71,7 +71,7 @@ uint64_t _now() {
initial = false;
mach_timebase_info_data_t info;
if (mach_timebase_info(&info) == 0) {
- micro_scale *= static_cast<double>info.numer / static_cast<double>(info.denom);
+ micro_scale *= static_cast<double>(info.numer) / static_cast<double>(info.denom);
}
}

View File

@ -1,51 +0,0 @@
$OpenBSD: patch-src_FbTk_TextureRender_cc,v 1.4 2013/01/21 09:49:20 dcoppa Exp $
Fix bug: actually invert a given Texture (stupid typo)
(upstream git commit bf5da7f1b6e87f574774558700d066d9cff1f436)
Bugfix: ensure textures have the correct size before applying 'bevel'
(upstream git commit 239e895826b2f843bc50cc6fef8108db174c33e8)
--- src/FbTk/TextureRender.cc.orig Mon Dec 10 18:26:54 2012
+++ src/FbTk/TextureRender.cc Mon Jan 21 10:21:35 2013
@@ -264,7 +264,7 @@ void invertRGB(unsigned int w, unsigned int h, FbTk::R
FbTk::RGBA* r = rgba + (w * h);
for (--r; l < r; ++l, --r) { // swapping 32bits (RGBA) at ones.
- std::swap(*((unsigned int*)r), *(unsigned int*)r);
+ std::swap(*((unsigned int*)l), *(unsigned int*)r);
}
}
@@ -916,25 +916,25 @@ Pixmap TextureRender::renderSolid(const FbTk::Texture
if (texture.type() & Texture::INTERLACED) {
lgc.setForeground(texture.colorTo());
- register unsigned int i = 0;
- for (; i < height; i += 2)
+ unsigned int i;
+ for (i = 0; i < height; i += 2)
pixmap.drawLine(lgc.gc(), 0, i, width - 1, i);
}
lgc.setForeground(texture.loColor());
- if (texture.type() & Texture::BEVEL1) {
+ if (height > 1 && width > 1 && texture.type() & Texture::BEVEL1) {
if (texture.type() & Texture::RAISED) {
drawBevelRectangle(pixmap, lgc.gc(), hgc.gc(), 0, height - 1, width -1 , 0);
} else if (texture.type() & Texture::SUNKEN) {
drawBevelRectangle(pixmap, hgc.gc(), lgc.gc(), 0, height - 1, width - 1, 0);
}
- } else if (texture.type() & Texture::BEVEL2) {
+ } else if (width > 2 && height > 2 && texture.type() & Texture::BEVEL2) {
if (texture.type() & Texture::RAISED) {
- drawBevelRectangle(pixmap, lgc.gc(), hgc.gc(), 1, height - 3, width - 3, 1);
+ drawBevelRectangle(pixmap, lgc.gc(), hgc.gc(), 1, height - 2, width - 2, 1);
} else if (texture.type() & Texture::SUNKEN) {
- drawBevelRectangle(pixmap, hgc.gc(), lgc.gc(), 1, height - 3, width - 3, 1);
+ drawBevelRectangle(pixmap, hgc.gc(), lgc.gc(), 1, height - 2, width - 2, 1);
}
}

View File

@ -1,189 +0,0 @@
$OpenBSD: patch-src_FbTk_Timer_cc,v 1.3 2013/02/04 09:19:44 dcoppa Exp $
Fix regression regarding timers with equal end-time
(upstream git commit 3e4ee48bf16be6925b7c35ab8bd73bd962c674d8)
Fix bug: handle the list of Timers not in-place
(upstream git commit 4d307dcd10af9d817ff5c05fc40ae7487564cb31)
See: http://sourceforge.net/tracker/?func=detail&aid=3590078&group_id=35398&atid=413960
Simplifies and fix bugs in FbTk::Timer
(upstream git commit 33161595f482d0dad950ce127b6016eefe8ea691)
--- src/FbTk/Timer.cc.orig Mon Dec 10 18:26:54 2012
+++ src/FbTk/Timer.cc Mon Feb 4 10:06:09 2013
@@ -52,62 +52,47 @@
#endif
#include <cstdio>
+#include <vector>
#include <set>
namespace {
struct TimerCompare {
- bool operator() (const FbTk::Timer* a, const FbTk::Timer* b) {
- return a->getEndTime() < b->getEndTime();
+ // stable sort order and allows multiple timers to have
+ // the same end-time
+ bool operator() (const FbTk::Timer* a, const FbTk::Timer* b) const {
+ uint64_t ae = a->getEndTime();
+ uint64_t be = b->getEndTime();
+ return (ae < be) || (ae == be && a < b);
}
};
typedef std::set<FbTk::Timer*, TimerCompare> TimerList;
TimerList s_timerlist;
-
-/// add a timer to the static list
-void addTimer(FbTk::Timer *timer) {
-
- assert(timer);
- int interval = timer->getInterval();
-
- // interval timers have their timeout change every time they are started!
- if (interval != 0) {
- timer->setTimeout(interval * FbTk::FbTime::IN_SECONDS);
- }
-
- s_timerlist.insert(timer);
}
-/// remove a timer from the static list
-void removeTimer(FbTk::Timer *timer) {
- assert(timer);
- s_timerlist.erase(timer);
-}
-
-
-}
-
-
namespace FbTk {
-Timer::Timer():m_timing(false), m_once(false), m_interval(0) {
+Timer::Timer() :
+ m_once(false),
+ m_interval(0),
+ m_start(0) {
}
Timer::Timer(const RefCount<Slot<void> > &handler):
m_handler(handler),
- m_timing(false),
m_once(false),
- m_interval(0) {
+ m_interval(0),
+ m_start(0) {
}
Timer::~Timer() {
- if (isTiming()) stop();
+ stop();
}
@@ -130,19 +115,31 @@ void Timer::setCommand(const RefCount<Slot<void> > &cm
void Timer::start() {
- m_start = FbTk::FbTime::now();
-
// only add Timers that actually DO something
- if ((! m_timing || m_interval != 0) && m_handler) {
- m_timing = true;
- ::addTimer(this);
+ if ( ( ! isTiming() || m_interval > 0 ) && m_handler) {
+
+ // in case start() gets triggered on a started
+ // timer with 'm_interval != 0' we have to remove
+ // it from s_timerlist before restarting it
+ stop();
+
+ m_start = FbTk::FbTime::now();
+
+ // interval timers have their timeout change every
+ // time they are started!
+ if (m_interval != 0) {
+ m_timeout = m_interval * FbTk::FbTime::IN_SECONDS;
+ }
+ s_timerlist.insert(this);
}
}
void Timer::stop() {
- m_timing = false;
- ::removeTimer(this);
+ if (isTiming()) {
+ s_timerlist.erase(this);
+ m_start = 0;
+ }
}
uint64_t Timer::getEndTime() const {
@@ -195,32 +192,41 @@ void Timer::updateTimers(int fd) {
return;
}
- now = FbTime::now();
- for (it = s_timerlist.begin(); it != s_timerlist.end(); ) {
+ // stoping / restarting the timers modifies the list in an upredictable
+ // way. to avoid problems such as infinite loops we save the current
+ // (ordered) list of timers into a list and work on it.
- // t->fireTimeout() might add timers to the list
- // this invalidates 'it'. thus we store the current timer
- Timer* t = *it;
- if (now < t->getEndTime()) {
+ static std::vector<FbTk::Timer*> timeouts;
+
+ now = FbTime::now();
+ for (it = s_timerlist.begin(); it != s_timerlist.end(); ++it ) {
+ if (now < (*it)->getEndTime()) {
break;
}
+ timeouts.push_back(*it);
+ }
- t->fireTimeout();
+ size_t i;
+ const size_t ts = timeouts.size();
+ for (i = 0; i < ts; ++i) {
- // find the iterator to the timer again
- // and continue working on the list
- it = s_timerlist.find(t);
- it++;
- s_timerlist.erase(t);
+ FbTk::Timer& t = *timeouts[i];
- if (! t->doOnce()) { // restart the current timer
- t->m_timing = false;
- t->start();
- } else {
- t->stop();
+ // first we stop the timer to remove it
+ // from s_timerlist
+ t.stop();
+
+ // then we call the handler which might (re)start 't'
+ // on it's own
+ t.fireTimeout();
+
+ // restart 't' if needed
+ if (!t.doOnce() && !t.isTiming()) {
+ t.start();
}
}
+ timeouts.clear();
}

View File

@ -1,24 +0,0 @@
$OpenBSD: patch-src_FbTk_Timer_hh,v 1.1 2013/01/21 09:49:20 dcoppa Exp $
Simplifies and fix bugs in FbTk::Timer
(upstream git commit 33161595f482d0dad950ce127b6016eefe8ea691)
--- src/FbTk/Timer.hh.orig Mon Dec 10 18:26:54 2012
+++ src/FbTk/Timer.hh Mon Jan 21 10:25:31 2013
@@ -61,7 +61,7 @@ class Timer { (public)
static void updateTimers(int file_descriptor);
- int isTiming() const { return m_timing; }
+ int isTiming() const { return (m_start > 0); }
int getInterval() const { return m_interval; }
int doOnce() const { return m_once; }
@@ -77,7 +77,6 @@ class Timer { (public)
private:
RefCount<Slot<void> > m_handler; ///< what to do on a timeout
- bool m_timing; ///< clock running?
bool m_once; ///< do timeout only once?
int m_interval; ///< Is an interval-only timer (e.g. clock), in seconds

View File

@ -1,10 +1,10 @@
$OpenBSD: patch-src_Makefile_in,v 1.3 2013/01/11 08:11:26 dcoppa Exp $
$OpenBSD: patch-src_Makefile_in,v 1.4 2013/04/16 15:27:03 bcallah Exp $
Don't check for git revision, this is a stable release
--- src/Makefile.in.orig Thu Jan 10 10:43:17 2013
+++ src/Makefile.in Thu Jan 10 10:45:51 2013
@@ -932,7 +932,6 @@ defaults.hh: Makefile
--- src/Makefile.in.orig Sun Apr 7 18:10:55 2013
+++ src/Makefile.in Sun Apr 7 18:12:55 2013
@@ -933,7 +933,6 @@ defaults.hh: Makefile
defaults.cc: force
@( \
@ -12,16 +12,16 @@ Don't check for git revision, this is a stable release
echo '// This file is generated from Makefile. Do not edit!'; \
echo '#include "defaults.hh"'; \
echo ''; \
@@ -941,10 +940,8 @@ defaults.cc: force
@@ -942,11 +941,7 @@ defaults.cc: force
echo '}'; \
echo ''; \
echo 'const char* gitrevision() {'; \
- echo ' return "'`cat $$GITDIR/$$(cat $$GITDIR/HEAD | cut -f 2 -d ' ')`'";';\
- echo '}' ) > defaults_tmp.cc
- @if ! cmp defaults_tmp.cc defaults.cc ; then cp defaults_tmp.cc defaults.cc; fi
- @rm defaults_tmp.cc
+ echo ' return "this_is_tar_ball_build";'; \
+ echo '}' ) > defaults.cc
force: ;
- if test -r $$GITDIR/HEAD; then \
- echo ' return "'`cat $$GITDIR/$$(cat $$GITDIR/HEAD | cut -f 2 -d ' ')`'";'; \
- else \
- echo ' return "this_is_tar_ball_build";'; \
- fi; \
+ echo ' return "this_is_tar_ball_build";'; \
echo '}' ) > defaults_tmp.cc
@if ! cmp defaults_tmp.cc defaults.cc ; then cp defaults_tmp.cc defaults.cc; fi
@rm defaults_tmp.cc

View File

@ -1,36 +0,0 @@
$OpenBSD: patch-src_Window_cc,v 1.8 2013/01/11 08:11:26 dcoppa Exp $
Reduce lagging behind of windows on slower displays
(upstream git commit 79fe2fca1de5140f538e68f6981b27cf7f917e7a)
--- src/Window.cc.orig Sat Oct 29 15:46:15 2011
+++ src/Window.cc Mon Aug 27 11:52:37 2012
@@ -2393,6 +2393,7 @@ void FluxboxWindow::motionNotifyEvent(XMotionEvent &me
Fluxbox::instance()->keys()->doAction(me.type, me.state, m_last_pressed_button, context, &winClient(), me.time);
if (moving) {
+ XEvent e;
// Warp to next or previous workspace?, must have moved sideways some
int moved_x = me.x_root - m_last_resize_x;
@@ -2428,7 +2429,6 @@ void FluxboxWindow::motionNotifyEvent(XMotionEvent &me
if (new_id != cur_id) {
// remove motion events from queue to avoid repeated warps
- XEvent e;
while (XCheckTypedEvent(display, MotionNotify, &e)) {
// might as well update the y-coordinate
m_last_resize_y = e.xmotion.y_root;
@@ -2453,6 +2453,12 @@ void FluxboxWindow::motionNotifyEvent(XMotionEvent &me
// dx = current left side, dy = current top
doSnapping(dx, dy);
+
+ // do not update display if another motion event is already pending
+ if (XCheckTypedEvent(display, MotionNotify, &e)) {
+ XPutBackEvent(display, &e);
+ return;
+ }
if (!screen().doOpaqueMove()) {
parent().drawRectangle(screen().rootTheme()->opGC(),

View File

@ -1,29 +0,0 @@
$OpenBSD: patch-util_fbsetbg,v 1.1 2013/01/11 08:11:26 dcoppa Exp $
Remove bashisms
(upstream git commit dcdfdfd56b5dbb6453062ad60876647b11433f18)
--- util/fbsetbg.orig Mon Dec 10 18:26:53 2012
+++ util/fbsetbg Thu Jan 10 11:45:28 2013
@@ -505,7 +505,11 @@ if [ "$option" = random ]; then
randomnumber=`random_number`
# some shells don't support $RANDOM
elif [ -z "$RANDOM" ]; then
- randomnumber=`(echo $$ ;time ps; w ; date )2>&1 | cksum | cut -f1 -d' '`
+ if [ -r /dev/urandom ]; then
+ randomnumber=`hexdump -n 2 -e '/2 "%u"' /dev/urandom`
+ else
+ randomnumber=`(echo $$; ps; w; date) 2>&1 | cksum | cut -f1 -d' '`
+ fi
else
randomnumber="$RANDOM"
fi
@@ -526,7 +530,7 @@ fi
if [ ! -r "$wallpaper" ]; then
- if [ "$ignore_missing_wallpaper" == "true" ]; then
+ if [ "$ignore_missing_wallpaper" = "true" ]; then
exit 0
fi
message "Can't find wallpaper $wallpaper"

View File

@ -1,4 +1,4 @@
$OpenBSD: patch-util_fluxbox-generate_menu_in,v 1.9 2013/01/11 08:11:26 dcoppa Exp $
$OpenBSD: patch-util_fluxbox-generate_menu_in,v 1.10 2013/04/16 15:27:03 bcallah Exp $
Adapt to our non-GNU grep
@ -8,29 +8,14 @@ Remove bashisms
Default browswer variable can be empty
(upstream git commit be2c52a146a013ebbfb708073317c337986371ff)
--- util/fluxbox-generate_menu.in.orig Mon Dec 10 18:26:53 2012
+++ util/fluxbox-generate_menu.in Thu Jan 10 12:43:23 2013
@@ -330,8 +330,8 @@ searchForIcon(){
--- util/fluxbox-generate_menu.in.orig Sun Apr 7 18:18:38 2013
+++ util/fluxbox-generate_menu.in Sun Apr 7 18:19:53 2013
@@ -330,7 +330,7 @@ searchForIcon(){
# echo "^.${entry_exec}.[[:space:]]*<.*/${icon_base}\....>"
if [ -f "$entry_icon" ]; then
# if icon exists and entry does not already exists, add it
- if ! grep -q -m 1 "^.${entry_exec}.[[:space:]]*<.*/${icon_base}\....>" $ICONMAPPING 2> /dev/null; then
- echo -e "\"${entry_exec}\" \t <${entry_icon}>" >> $ICONMAPPING
+ if ! grep -q "^.${entry_exec}.[[:space:]]*<.*/${icon_base}\....>" $ICONMAPPING 2> /dev/null; then
+ printf "\"${entry_exec}\" \t <${entry_icon}>\n" >> $ICONMAPPING
printf "\"${entry_exec}\" \t <${entry_icon}>\n" >> $ICONMAPPING
else
: echo "# mapping already exists for ${entry_exec}" >> $ICONMAPPING
fi
@@ -1530,7 +1530,11 @@ else
done
fi
DEFAULT_BROWSERNAME=`echo $DEFAULT_BROWSER|awk '{print $1}'`
-DEFAULT_BROWSERNAME=`basename $DEFAULT_BROWSERNAME`
+if [ "x$DEFAULT_BROWSERNAME" != "x" ]; then
+ DEFAULT_BROWSERNAME=`basename $DEFAULT_BROWSERNAME`
+else
+ DEFAULT_BROWSERNAME="firefox"
+fi
if [ -z "$LAUNCHER" ]; then
LAUNCHER=@pkgprefix@fbrun@pkgsuffix@@EXEEXT@

View File

@ -1,4 +1,4 @@
@comment $OpenBSD: PLIST,v 1.17 2013/01/11 08:11:26 dcoppa Exp $
@comment $OpenBSD: PLIST,v 1.18 2013/04/16 15:27:03 bcallah Exp $
@bin bin/fbrun
bin/fbsetbg
@bin bin/fbsetroot
@ -87,6 +87,8 @@ share/fluxbox/nls/fr_FR.ISO-8859-15/
share/fluxbox/nls/fr_FR.ISO-8859-15/fluxbox.cat
share/fluxbox/nls/fr_FR.UTF-8/
share/fluxbox/nls/fr_FR.UTF-8/fluxbox.cat
share/fluxbox/nls/he_IL.UTF-8/
share/fluxbox/nls/he_IL.UTF-8/fluxbox.cat
share/fluxbox/nls/it_IT.ISO-8859-1/
share/fluxbox/nls/it_IT.ISO-8859-1/fluxbox.cat
share/fluxbox/nls/it_IT.UTF-8/