[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso/src base.pri core/DiskIO.cpp core/Disk...
From: |
Remon Sijrier |
Subject: |
[Traverso-commit] traverso/src base.pri core/DiskIO.cpp core/Disk... |
Date: |
Fri, 22 Jun 2007 12:29:29 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Remon Sijrier <r_sijrier> 07/06/22 12:29:29
Modified files:
src : base.pri
src/core : DiskIO.cpp DiskIO.h MonoReader.cpp
RingBufferNPT.h Song.h
src/engine : AudioDevice.cpp Client.h defines.h
JackDriver.cpp JackDriver.h precompile.h
src/traverso/songcanvas: TimeLineView.cpp
src/traverso : traverso.pro
Log message:
* copied atomic_int_get/set() implementations from glibc's atomic.h/c
to get rid of the glibc dependency!
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/base.pri?cvsroot=traverso&r1=1.38&r2=1.39
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/DiskIO.cpp?cvsroot=traverso&r1=1.37&r2=1.38
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/DiskIO.h?cvsroot=traverso&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/MonoReader.cpp?cvsroot=traverso&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/RingBufferNPT.h?cvsroot=traverso&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Song.h?cvsroot=traverso&r1=1.60&r2=1.61
http://cvs.savannah.gnu.org/viewcvs/traverso/src/engine/AudioDevice.cpp?cvsroot=traverso&r1=1.34&r2=1.35
http://cvs.savannah.gnu.org/viewcvs/traverso/src/engine/Client.h?cvsroot=traverso&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/traverso/src/engine/defines.h?cvsroot=traverso&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/traverso/src/engine/JackDriver.cpp?cvsroot=traverso&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/traverso/src/engine/JackDriver.h?cvsroot=traverso&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/traverso/src/engine/precompile.h?cvsroot=traverso&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/TimeLineView.cpp?cvsroot=traverso&r1=1.42&r2=1.43
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/traverso.pro?cvsroot=traverso&r1=1.55&r2=1.56
Patches:
Index: base.pri
===================================================================
RCS file: /sources/traverso/traverso/src/base.pri,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -b -r1.38 -r1.39
--- base.pri 16 Jun 2007 15:28:54 -0000 1.38
+++ base.pri 22 Jun 2007 12:29:27 -0000 1.39
@@ -22,7 +22,7 @@
DEFINES += ALSA_SUPPORT
#DEFINES += PORTAUDIO_SUPPORT
DEFINES += LV2_SUPPORT
-#DEFINES += QT_OPENGL_SUPPORT
+DEFINES += QT_OPENGL_SUPPORT
#
# Uncomment the line which notes your CPU type
@@ -54,7 +54,7 @@
DEFINES += STATIC_BUILD
!macx{
-# DEFINES += PRECOMPILED_HEADER
+ DEFINES += PRECOMPILED_HEADER
}
#QMAKE_CXXFLAGS += -fstack-protector-all
@@ -80,8 +80,6 @@
unix {
- QMAKE_CXXFLAGS += $$system(pkg-config --cflags glib-2.0)
-
release {
# DEFINES += USE_DEBUGGER
@@ -122,14 +120,11 @@
}
macx {
- QMAKE_CXXFLAGS += $$system(pkg-config --cflags glib-2.0)
-
DEFINES += OSX_BUILD
DEFINES += PORTAUDIO_SUPPORT
DEFINES -= ALSA_SUPPORT
DEFINES -= JACK_SUPPORT
QMAKE_LFLAGS_SONAME = -Wl,-install_name,@executable_path/../Frameworks/
- INCLUDEPATH += /usr/local/include/glib-2.0
RC_FILE = ../../resources/images/traverso_mac.icns
}
Index: core/DiskIO.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/DiskIO.cpp,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -b -r1.37 -r1.38
--- core/DiskIO.cpp 4 Jun 2007 18:22:52 -0000 1.37
+++ core/DiskIO.cpp 22 Jun 2007 12:29:27 -0000 1.38
@@ -262,8 +262,8 @@
}
}
- if (space >
g_atomic_int_get(&m_writeBufferFillStatus)) {
-
g_atomic_int_set(&m_writeBufferFillStatus, space);
+ if (space >
t_atomic_int_get(&m_writeBufferFillStatus)) {
+
t_atomic_int_set(&m_writeBufferFillStatus, space);
}
m_processableSources.append(source);
@@ -284,8 +284,8 @@
}
}
- if (status->fillStatus >
g_atomic_int_get(&m_readBufferFillStatus)) {
-
g_atomic_int_set(&m_readBufferFillStatus, status->fillStatus);
+ if (status->fillStatus >
t_atomic_int_get(&m_readBufferFillStatus)) {
+
t_atomic_int_set(&m_readBufferFillStatus, status->fillStatus);
}
m_processableSources.append(source);
@@ -455,10 +455,10 @@
*/
int DiskIO::get_write_buffers_fill_status( )
{
- int space = g_atomic_int_get(&m_writeBufferFillStatus);
+ int space = t_atomic_int_get(&m_writeBufferFillStatus);
int size = audiodevice().get_sample_rate() * writebuffertime;
int status = (int) (((float)(size - space) / size) * 100);
- g_atomic_int_set(&m_writeBufferFillStatus, 0);
+ t_atomic_int_set(&m_writeBufferFillStatus, 0);
return status;
}
@@ -470,8 +470,8 @@
*/
int DiskIO::get_read_buffers_fill_status( )
{
- int status = 100 - g_atomic_int_get(&m_readBufferFillStatus);
- g_atomic_int_set(&m_readBufferFillStatus, 0);
+ int status = 100 - t_atomic_int_get(&m_readBufferFillStatus);
+ t_atomic_int_set(&m_readBufferFillStatus, 0);
return status;
}
Index: core/DiskIO.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/DiskIO.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- core/DiskIO.h 4 Jun 2007 18:22:52 -0000 1.16
+++ core/DiskIO.h 22 Jun 2007 12:29:28 -0000 1.17
@@ -26,10 +26,6 @@
#include <QList>
#include <QTimer>
-#if ! defined (Q_WS_WIN)
-#include <glib.h>
-#endif
-
#include "defines.h"
class ReadSource;
@@ -80,8 +76,8 @@
DiskIOThread* m_diskThread;
QTimer m_workTimer;
QMutex mutex;
- gint m_readBufferFillStatus;
- gint m_writeBufferFillStatus;
+ volatile int m_readBufferFillStatus;
+ volatile int m_writeBufferFillStatus;
RingBuffer* cpuTimeBuffer;
trav_time_t cycleStartTime;
trav_time_t lastCpuReadTime;
Index: core/MonoReader.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/MonoReader.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- core/MonoReader.cpp 4 Jun 2007 18:22:52 -0000 1.16
+++ core/MonoReader.cpp 22 Jun 2007 12:29:28 -0000 1.17
@@ -342,7 +342,7 @@
void MonoReader::sync(audio_sample_t* framebuffer, audio_sample_t* readbuffer)
{
- PENTER;
+ PENTER2;
if (!m_needSync) {
return;
}
Index: core/RingBufferNPT.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/RingBufferNPT.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- core/RingBufferNPT.h 4 Apr 2007 19:41:55 -0000 1.4
+++ core/RingBufferNPT.h 22 Jun 2007 12:29:28 -0000 1.5
@@ -15,7 +15,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: RingBufferNPT.h,v 1.4 2007/04/04 19:41:55 r_sijrier Exp $
+ $Id: RingBufferNPT.h,v 1.5 2007/06/22 12:29:28 r_sijrier Exp $
*/
#ifndef ringbuffer_npt_h
@@ -25,11 +25,10 @@
#if ! defined (Q_WS_WIN)
#include <sys/mman.h>
-#include <glib.h>
-#else
-#include <defines.h>
#endif
+#include "defines.h"
+
/* ringbuffer class where the element size is not required to be a power of
two */
template<class T>
@@ -57,14 +56,14 @@
void reset () {
/* !!! NOT THREAD SAFE !!! */
- g_atomic_int_set (&write_ptr, 0);
- g_atomic_int_set (&read_ptr, 0);
+ t_atomic_int_set (&write_ptr, 0);
+ t_atomic_int_set (&read_ptr, 0);
}
void set (size_t r, size_t w) {
/* !!! NOT THREAD SAFE !!! */
- g_atomic_int_set (&write_ptr, w);
- g_atomic_int_set (&read_ptr, r);
+ t_atomic_int_set (&write_ptr, w);
+ t_atomic_int_set (&read_ptr, r);
}
size_t read (T *dest, size_t cnt);
@@ -79,22 +78,22 @@
void get_write_vector (rw_vector *);
void decrement_read_ptr (size_t cnt) {
- g_atomic_int_set (&read_ptr, (g_atomic_int_get(&read_ptr) -
cnt) % size);
+ t_atomic_int_set (&read_ptr, (t_atomic_int_get(&read_ptr) -
cnt) % size);
}
void increment_read_ptr (size_t cnt) {
- g_atomic_int_set (&read_ptr, (g_atomic_int_get(&read_ptr) +
cnt) % size);
+ t_atomic_int_set (&read_ptr, (t_atomic_int_get(&read_ptr) +
cnt) % size);
}
void increment_write_ptr (size_t cnt) {
- g_atomic_int_set (&write_ptr, (g_atomic_int_get(&write_ptr) +
cnt) % size);
+ t_atomic_int_set (&write_ptr, (t_atomic_int_get(&write_ptr) +
cnt) % size);
}
size_t write_space () {
size_t w, r;
- w = g_atomic_int_get (&write_ptr);
- r = g_atomic_int_get (&read_ptr);
+ w = t_atomic_int_get (&write_ptr);
+ r = t_atomic_int_get (&read_ptr);
if (w > r) {
return ((r - w + size) % size) - 1;
@@ -108,8 +107,8 @@
size_t read_space () {
size_t w, r;
- w = g_atomic_int_get (&write_ptr);
- r = g_atomic_int_get (&read_ptr);
+ w = t_atomic_int_get (&write_ptr);
+ r = t_atomic_int_get (&read_ptr);
if (w > r) {
return w - r;
@@ -119,15 +118,15 @@
}
T *buffer () { return buf; }
- size_t get_write_ptr () const { return g_atomic_int_get (&write_ptr); }
- size_t get_read_ptr () const { return g_atomic_int_get (&read_ptr); }
+ size_t get_write_ptr () const { return t_atomic_int_get (&write_ptr); }
+ size_t get_read_ptr () const { return t_atomic_int_get (&read_ptr); }
size_t bufsize () const { return size; }
protected:
T *buf;
size_t size;
- mutable gint write_ptr;
- mutable gint read_ptr;
+ mutable volatile int write_ptr;
+ mutable volatile int read_ptr;
};
template<class T> size_t
@@ -139,7 +138,7 @@
size_t n1, n2;
size_t priv_read_ptr;
- priv_read_ptr=g_atomic_int_get(&read_ptr);
+ priv_read_ptr=t_atomic_int_get(&read_ptr);
if ((free_cnt = read_space ()) == 0) {
return 0;
@@ -165,7 +164,7 @@
priv_read_ptr = n2;
}
- g_atomic_int_set(&read_ptr, priv_read_ptr);
+ t_atomic_int_set(&read_ptr, priv_read_ptr);
return to_read;
}
@@ -178,7 +177,7 @@
size_t n1, n2;
size_t priv_write_ptr;
- priv_write_ptr=g_atomic_int_get(&write_ptr);
+ priv_write_ptr=t_atomic_int_get(&write_ptr);
if ((free_cnt = write_space ()) == 0) {
return 0;
@@ -204,7 +203,7 @@
priv_write_ptr = n2;
}
- g_atomic_int_set(&write_ptr, priv_write_ptr);
+ t_atomic_int_set(&write_ptr, priv_write_ptr);
return to_write;
}
@@ -215,8 +214,8 @@
size_t cnt2;
size_t w, r;
- w = g_atomic_int_get (&write_ptr);
- r = g_atomic_int_get (&read_ptr);
+ w = t_atomic_int_get (&write_ptr);
+ r = t_atomic_int_get (&read_ptr);
if (w > r) {
free_cnt = w - r;
@@ -254,8 +253,8 @@
size_t cnt2;
size_t w, r;
- w = g_atomic_int_get (&write_ptr);
- r = g_atomic_int_get (&read_ptr);
+ w = t_atomic_int_get (&write_ptr);
+ r = t_atomic_int_get (&read_ptr);
if (w > r) {
free_cnt = ((r - w + size) % size) - 1;
Index: core/Song.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/Song.h,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -b -r1.60 -r1.61
--- core/Song.h 21 Jun 2007 14:31:10 -0000 1.60
+++ core/Song.h 22 Jun 2007 12:29:28 -0000 1.61
@@ -162,7 +162,7 @@
// The following data could be read/written by multiple threads
// (gui, audio and m_diskio thread). Therefore they should have
// atomic behaviour, still not sure if volatile size_t declaration
- // would suffice, or should we use g_atomic_int_set/get() to make
+ // would suffice, or should we use t_atomic_int_set/get() to make
// it 100% portable and working on all platforms...?
volatile size_t m_transportFrame;
volatile size_t workingFrame;
Index: engine/AudioDevice.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/engine/AudioDevice.cpp,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -b -r1.34 -r1.35
--- engine/AudioDevice.cpp 21 Jun 2007 14:31:10 -0000 1.34
+++ engine/AudioDevice.cpp 22 Jun 2007 12:29:28 -0000 1.35
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Id: AudioDevice.cpp,v 1.34 2007/06/21 14:31:10 r_sijrier Exp $
+$Id: AudioDevice.cpp,v 1.35 2007/06/22 12:29:28 r_sijrier Exp $
*/
#include "AudioDevice.h"
@@ -789,6 +789,7 @@
transport_state_t state;
state.tranport = TransportRolling;
state.isSlave = false;
+ state.frame = 0; // get from client!!
client->transport_control(state);
}
@@ -806,6 +807,8 @@
transport_state_t state;
state.tranport = TransportStopped;
+ state.isSlave = false;
+ state.frame = 0; // get from client!!
client->transport_control(state);
}
@@ -823,6 +826,7 @@
transport_state_t state;
state.tranport = TransportStarting;
+ state.isSlave = false;
state.frame = frame;
client->transport_control(state);
Index: engine/Client.h
===================================================================
RCS file: /sources/traverso/traverso/src/engine/Client.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- engine/Client.h 21 Jun 2007 14:31:11 -0000 1.4
+++ engine/Client.h 22 Jun 2007 12:29:28 -0000 1.5
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2005-2006 Remon Sijrier
+Copyright (C) 2005-2007 Remon Sijrier
This file is part of Traverso
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Id: Client.h,v 1.4 2007/06/21 14:31:11 r_sijrier Exp $
+$Id: Client.h,v 1.5 2007/06/22 12:29:28 r_sijrier Exp $
*/
#ifndef CLIENT_H
Index: engine/defines.h
===================================================================
RCS file: /sources/traverso/traverso/src/engine/defines.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- engine/defines.h 21 Jun 2007 14:31:11 -0000 1.8
+++ engine/defines.h 22 Jun 2007 12:29:28 -0000 1.9
@@ -4,13 +4,33 @@
#include <inttypes.h>
#include "FastDelegate.h"
-#if defined (WIN_BUILD)
-// 'stolen' from the glib/atomic.h header file.
-// it's the only thing we need glib for on windows...
-# define g_atomic_int_get(atomic) (*(atomic))
-# define g_atomic_int_set(atomic, newval) ((void) (*(atomic) = (newval)))
-#define gint int
-#endif // END Q_WS_WIN
+// Implementation for atomic int get/set from glibc's atomic.h/c
+// to get rid of the glib dependency!
+// Arches that need memory bariers: ppc (which we support)
+// and sparc, alpha, ia64 which we do not support ??
+
+#if defined(__ppc__) || defined(__powerpc__) || defined(__PPC__)
+
+# define ATOMIC_MEMORY_BARRIER __asm__ ("sync" : : : "memory")
+
+int t_atomic_int_get (volatile int *atomic)
+{
+ ATOMIC_MEMORY_BARRIER;
+ return *atomic;
+}
+
+void t_atomic_int_set (volatile int *atomic, int newval)
+{
+ *atomic = newval;
+ ATOMIC_MEMORY_BARRIER;
+}
+
+#else
+
+# define t_atomic_int_get(atomic) (*(atomic))
+# define t_atomic_int_set(atomic, newval) ((void) (*(atomic) = (newval)))
+
+#endif // ENDIF __ppc__
using namespace fastdelegate;
Index: engine/JackDriver.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/engine/JackDriver.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- engine/JackDriver.cpp 21 Jun 2007 14:31:11 -0000 1.16
+++ engine/JackDriver.cpp 22 Jun 2007 12:29:28 -0000 1.17
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2005-2006 Remon Sijrier
+ Copyright (C) 2005-2007 Remon Sijrier
This file is part of Traverso
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- $Id: JackDriver.cpp,v 1.16 2007/06/21 14:31:11 r_sijrier Exp $
+ $Id: JackDriver.cpp,v 1.17 2007/06/22 12:29:28 r_sijrier Exp $
*/
#include "JackDriver.h"
Index: engine/JackDriver.h
===================================================================
RCS file: /sources/traverso/traverso/src/engine/JackDriver.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- engine/JackDriver.h 21 Jun 2007 14:31:11 -0000 1.7
+++ engine/JackDriver.h 22 Jun 2007 12:29:28 -0000 1.8
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2005-2006 Remon Sijrier
+ Copyright (C) 2005-2007 Remon Sijrier
This file is part of Traverso
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- $Id: JackDriver.h,v 1.7 2007/06/21 14:31:11 r_sijrier Exp $
+ $Id: JackDriver.h,v 1.8 2007/06/22 12:29:28 r_sijrier Exp $
*/
#ifndef JACKDRIVER_H
@@ -51,7 +51,6 @@
size_t is_jack_running() const {return m_running == 1;}
jack_client_t* get_client() const {return client;}
- void set_jack_slave(bool slave);
bool is_slave() const {return m_isSlave;}
private:
Index: engine/precompile.h
===================================================================
RCS file: /sources/traverso/traverso/src/engine/precompile.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- engine/precompile.h 4 Dec 2006 19:34:22 -0000 1.1
+++ engine/precompile.h 22 Jun 2007 12:29:28 -0000 1.2
@@ -7,5 +7,4 @@
#include <qapplication.h>
#include <qtimer.h>
-#include <glib.h>
#include <stdlib.h>
Index: traverso/songcanvas/TimeLineView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/TimeLineView.cpp,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -b -r1.42 -r1.43
--- traverso/songcanvas/TimeLineView.cpp 6 Jun 2007 17:50:30 -0000
1.42
+++ traverso/songcanvas/TimeLineView.cpp 22 Jun 2007 12:29:28 -0000
1.43
@@ -261,7 +261,7 @@
void TimeLineView::paint(QPainter* painter, const QStyleOptionGraphicsItem*
option, QWidget* widget)
{
- PENTER;
+ PENTER3;
Q_UNUSED(widget);
painter->save();
@@ -462,7 +462,6 @@
void TimeLineView::hoverEnterEvent ( QGraphicsSceneHoverEvent * event )
{
- PENTER;
Q_UNUSED(event);
if (m_blinkingMarker) {
@@ -472,7 +471,6 @@
void TimeLineView::hoverLeaveEvent ( QGraphicsSceneHoverEvent * event )
{
- PENTER;
Q_UNUSED(event);
if (ie().is_holding()) {
Index: traverso/traverso.pro
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/traverso.pro,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -b -r1.55 -r1.56
--- traverso/traverso.pro 16 Jun 2007 15:28:55 -0000 1.55
+++ traverso/traverso.pro 22 Jun 2007 12:29:28 -0000 1.56
@@ -143,10 +143,6 @@
# if exists('sys/vfs.h')
DEFINES += HAVE_SYS_VFS_H
- # perhaps this doesn't cover mac os x ?
- # if so, copy paste into macx section...
- LIBS += $$system(pkg-config --libs glib-2.0)
-
contains(DEFINES, JACK_SUPPORT){
system(which relaytool 2>/dev/null >/dev/null){
LIBS += `relaytool --multilink libjack.so.0 libjack-0.100.0.so.0
--relay jack -ljack`
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Traverso-commit] traverso/src base.pri core/DiskIO.cpp core/Disk...,
Remon Sijrier <=