Revision: 27064
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27064
Author:   kjym3
Date:     2010-02-21 22:47:52 +0100 (Sun, 21 Feb 2010)

Log Message:
-----------
Merged changes in the trunk up to revision 27063.

Revision Links:
--------------
    
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27063

Modified Paths:
--------------
    branches/soc-2008-mxcurioni/SConstruct
    branches/soc-2008-mxcurioni/config/linux2-config.py
    branches/soc-2008-mxcurioni/intern/audaspace/intern/AUD_C-API.cpp
    branches/soc-2008-mxcurioni/intern/audaspace/intern/AUD_C-API.h
    branches/soc-2008-mxcurioni/intern/audaspace/jack/AUD_JackDevice.cpp
    branches/soc-2008-mxcurioni/intern/audaspace/jack/AUD_JackDevice.h
    branches/soc-2008-mxcurioni/release/scripts/io/export_fbx.py
    branches/soc-2008-mxcurioni/release/scripts/io/import_anim_bvh.py
    branches/soc-2008-mxcurioni/release/scripts/io/netrender/__init__.py
    branches/soc-2008-mxcurioni/release/scripts/modules/bpy/ops.py
    branches/soc-2008-mxcurioni/release/scripts/modules/bpy/utils.py
    branches/soc-2008-mxcurioni/release/scripts/op/console_python.py
    branches/soc-2008-mxcurioni/release/scripts/op/object.py
    branches/soc-2008-mxcurioni/release/scripts/op/object_align.py
    branches/soc-2008-mxcurioni/release/scripts/op/wm.py
    branches/soc-2008-mxcurioni/release/scripts/ui/space_info.py
    branches/soc-2008-mxcurioni/release/scripts/ui/space_time.py
    branches/soc-2008-mxcurioni/release/scripts/ui/space_userpref.py
    branches/soc-2008-mxcurioni/release/scripts/ui/space_view3d.py
    branches/soc-2008-mxcurioni/release/scripts/ui/space_view3d_toolbar.py
    branches/soc-2008-mxcurioni/source/blender/blenkernel/BKE_armature.h
    branches/soc-2008-mxcurioni/source/blender/blenkernel/BKE_constraint.h
    branches/soc-2008-mxcurioni/source/blender/blenkernel/BKE_material.h
    branches/soc-2008-mxcurioni/source/blender/blenkernel/BKE_sound.h
    branches/soc-2008-mxcurioni/source/blender/blenkernel/intern/action.c
    branches/soc-2008-mxcurioni/source/blender/blenkernel/intern/anim_sys.c
    branches/soc-2008-mxcurioni/source/blender/blenkernel/intern/armature.c
    branches/soc-2008-mxcurioni/source/blender/blenkernel/intern/constraint.c
    branches/soc-2008-mxcurioni/source/blender/blenkernel/intern/fcurve.c
    branches/soc-2008-mxcurioni/source/blender/blenkernel/intern/gpencil.c
    branches/soc-2008-mxcurioni/source/blender/blenkernel/intern/ipo.c
    branches/soc-2008-mxcurioni/source/blender/blenkernel/intern/material.c
    branches/soc-2008-mxcurioni/source/blender/blenkernel/intern/nla.c
    branches/soc-2008-mxcurioni/source/blender/blenkernel/intern/node.c
    branches/soc-2008-mxcurioni/source/blender/blenkernel/intern/object.c
    branches/soc-2008-mxcurioni/source/blender/blenkernel/intern/scene.c
    branches/soc-2008-mxcurioni/source/blender/blenkernel/intern/sequencer.c
    branches/soc-2008-mxcurioni/source/blender/blenkernel/intern/sound.c
    branches/soc-2008-mxcurioni/source/blender/blenkernel/intern/texture.c
    branches/soc-2008-mxcurioni/source/blender/blenlib/BLI_path_util.h
    branches/soc-2008-mxcurioni/source/blender/blenlib/intern/math_rotation.c
    branches/soc-2008-mxcurioni/source/blender/blenlib/intern/path_util.c
    branches/soc-2008-mxcurioni/source/blender/blenloader/intern/readfile.c
    branches/soc-2008-mxcurioni/source/blender/collada/DocumentExporter.cpp
    
branches/soc-2008-mxcurioni/source/blender/editors/animation/anim_channels_defines.c
    
branches/soc-2008-mxcurioni/source/blender/editors/animation/anim_channels_edit.c
    branches/soc-2008-mxcurioni/source/blender/editors/animation/anim_filter.c
    branches/soc-2008-mxcurioni/source/blender/editors/animation/anim_markers.c
    branches/soc-2008-mxcurioni/source/blender/editors/animation/anim_ops.c
    
branches/soc-2008-mxcurioni/source/blender/editors/animation/keyframes_edit.c
    branches/soc-2008-mxcurioni/source/blender/editors/animation/keyframing.c
    
branches/soc-2008-mxcurioni/source/blender/editors/armature/armature_intern.h
    branches/soc-2008-mxcurioni/source/blender/editors/armature/armature_ops.c
    branches/soc-2008-mxcurioni/source/blender/editors/armature/editarmature.c
    branches/soc-2008-mxcurioni/source/blender/editors/armature/poseSlide.c
    branches/soc-2008-mxcurioni/source/blender/editors/armature/poselib.c
    branches/soc-2008-mxcurioni/source/blender/editors/include/ED_anim_api.h
    branches/soc-2008-mxcurioni/source/blender/editors/include/ED_mesh.h
    branches/soc-2008-mxcurioni/source/blender/editors/include/ED_screen.h
    branches/soc-2008-mxcurioni/source/blender/editors/include/ED_screen_types.h
    
branches/soc-2008-mxcurioni/source/blender/editors/interface/interface_handlers.c
    
branches/soc-2008-mxcurioni/source/blender/editors/interface/interface_templates.c
    branches/soc-2008-mxcurioni/source/blender/editors/mesh/editmesh_mods.c
    branches/soc-2008-mxcurioni/source/blender/editors/mesh/editmesh_tools.c
    branches/soc-2008-mxcurioni/source/blender/editors/mesh/meshtools.c
    
branches/soc-2008-mxcurioni/source/blender/editors/object/object_constraint.c
    branches/soc-2008-mxcurioni/source/blender/editors/object/object_ops.c
    branches/soc-2008-mxcurioni/source/blender/editors/object/object_relations.c
    branches/soc-2008-mxcurioni/source/blender/editors/object/object_vgroup.c
    branches/soc-2008-mxcurioni/source/blender/editors/render/render_preview.c
    branches/soc-2008-mxcurioni/source/blender/editors/screen/screen_ops.c
    branches/soc-2008-mxcurioni/source/blender/editors/space_graph/graph_draw.c
    
branches/soc-2008-mxcurioni/source/blender/editors/space_logic/logic_window.c
    branches/soc-2008-mxcurioni/source/blender/editors/space_nla/nla_channels.c
    branches/soc-2008-mxcurioni/source/blender/editors/space_outliner/outliner.c
    
branches/soc-2008-mxcurioni/source/blender/editors/space_sequencer/sequencer_draw.c
    branches/soc-2008-mxcurioni/source/blender/editors/space_time/space_time.c
    
branches/soc-2008-mxcurioni/source/blender/editors/space_view3d/drawanimviz.c
    
branches/soc-2008-mxcurioni/source/blender/editors/space_view3d/drawarmature.c
    branches/soc-2008-mxcurioni/source/blender/editors/space_view3d/drawobject.c
    
branches/soc-2008-mxcurioni/source/blender/editors/space_view3d/view3d_buttons.c
    
branches/soc-2008-mxcurioni/source/blender/editors/space_view3d/view3d_intern.h
    
branches/soc-2008-mxcurioni/source/blender/editors/space_view3d/view3d_view.c
    branches/soc-2008-mxcurioni/source/blender/editors/transform/transform.c
    branches/soc-2008-mxcurioni/source/blender/editors/transform/transform.h
    
branches/soc-2008-mxcurioni/source/blender/editors/transform/transform_conversions.c
    
branches/soc-2008-mxcurioni/source/blender/editors/transform/transform_generics.c
    branches/soc-2008-mxcurioni/source/blender/gpu/gpu_buffers.h
    branches/soc-2008-mxcurioni/source/blender/gpu/intern/gpu_buffers.c
    branches/soc-2008-mxcurioni/source/blender/ikplugin/intern/iksolver_plugin.c
    branches/soc-2008-mxcurioni/source/blender/ikplugin/intern/itasc_plugin.cpp
    branches/soc-2008-mxcurioni/source/blender/imbuf/intern/anim.c
    branches/soc-2008-mxcurioni/source/blender/makesdna/DNA_action_types.h
    branches/soc-2008-mxcurioni/source/blender/makesdna/DNA_anim_types.h
    branches/soc-2008-mxcurioni/source/blender/makesdna/DNA_lamp_types.h
    branches/soc-2008-mxcurioni/source/blender/makesdna/DNA_material_types.h
    branches/soc-2008-mxcurioni/source/blender/makesdna/DNA_mesh_types.h
    branches/soc-2008-mxcurioni/source/blender/makesdna/DNA_scene_types.h
    branches/soc-2008-mxcurioni/source/blender/makesdna/DNA_texture_types.h
    branches/soc-2008-mxcurioni/source/blender/makesdna/DNA_userdef_types.h
    branches/soc-2008-mxcurioni/source/blender/makesdna/DNA_world_types.h
    branches/soc-2008-mxcurioni/source/blender/makesrna/RNA_access.h
    branches/soc-2008-mxcurioni/source/blender/makesrna/intern/rna_access.c
    branches/soc-2008-mxcurioni/source/blender/makesrna/intern/rna_action.c
    branches/soc-2008-mxcurioni/source/blender/makesrna/intern/rna_main_api.c
    branches/soc-2008-mxcurioni/source/blender/makesrna/intern/rna_material.c
    branches/soc-2008-mxcurioni/source/blender/makesrna/intern/rna_mesh.c
    branches/soc-2008-mxcurioni/source/blender/makesrna/intern/rna_nodetree.c
    branches/soc-2008-mxcurioni/source/blender/makesrna/intern/rna_object.c
    branches/soc-2008-mxcurioni/source/blender/makesrna/intern/rna_pose.c
    branches/soc-2008-mxcurioni/source/blender/makesrna/intern/rna_scene.c
    branches/soc-2008-mxcurioni/source/blender/makesrna/intern/rna_userdef.c
    branches/soc-2008-mxcurioni/source/blender/makesrna/intern/rna_wm.c
    branches/soc-2008-mxcurioni/source/blender/makesrna/intern/rna_wm_api.c
    branches/soc-2008-mxcurioni/source/blender/python/generic/Mathutils.c
    branches/soc-2008-mxcurioni/source/blender/python/generic/Mathutils.h
    branches/soc-2008-mxcurioni/source/blender/python/generic/euler.c
    branches/soc-2008-mxcurioni/source/blender/python/generic/euler.h
    branches/soc-2008-mxcurioni/source/blender/python/generic/matrix.c
    branches/soc-2008-mxcurioni/source/blender/python/generic/quat.c
    branches/soc-2008-mxcurioni/source/blender/python/generic/vector.c
    branches/soc-2008-mxcurioni/source/blender/python/intern/bpy_props.c
    branches/soc-2008-mxcurioni/source/blender/python/intern/bpy_rna.c
    
branches/soc-2008-mxcurioni/source/blender/windowmanager/intern/wm_event_system.c
    branches/soc-2008-mxcurioni/source/blender/windowmanager/intern/wm_files.c
    
branches/soc-2008-mxcurioni/source/blenderplayer/bad_level_call_stubs/stubs.c

Added Paths:
-----------
    branches/soc-2008-mxcurioni/release/scripts/templates/operator_modal.py
    branches/soc-2008-mxcurioni/source/blender/editors/armature/poseUtils.c
    branches/soc-2008-mxcurioni/source/blender/editors/include/ED_numinput.h
    branches/soc-2008-mxcurioni/source/blender/editors/util/numinput.c
    branches/soc-2008-mxcurioni/source/icons/linuxcrossblender.rcscons

Removed Paths:
-------------
    
branches/soc-2008-mxcurioni/source/blender/editors/transform/transform_numinput.c

Modified: branches/soc-2008-mxcurioni/SConstruct
===================================================================
--- branches/soc-2008-mxcurioni/SConstruct      2010-02-21 20:27:13 UTC (rev 
27063)
+++ branches/soc-2008-mxcurioni/SConstruct      2010-02-21 21:47:52 UTC (rev 
27064)
@@ -244,40 +244,6 @@
 
 printdebug = B.arguments.get('BF_LISTDEBUG', 0)
 
-# see if this linux distro has libalut
-
-if env['OURPLATFORM'] == 'linux2' :
-       if env['WITH_BF_OPENAL']:
-               mylib_test_source_file = """
-               #include "AL/alut.h"
-               int main(int argc, char **argv)
-               {
-                       alutGetMajorVersion();
-                       return 0;
-               }
-               """
-
-               def CheckFreeAlut(context,env):
-                       context.Message( B.bc.OKGREEN + "Linux platform 
detected:\n  checking for FreeAlut... " + B.bc.ENDC )
-                       env['LIBS'] = 'alut'
-                       result = context.TryLink(mylib_test_source_file, '.c')
-                       context.Result(result)
-                       return result
-
-               env2 = env.Clone( LIBPATH = env['BF_OPENAL'] ) 
-               sconf_temp = mkdtemp()
-               conf = Configure( env2, {'CheckFreeAlut' : CheckFreeAlut}, 
sconf_temp, '/dev/null' )
-               if conf.CheckFreeAlut( env2 ):
-                       env['BF_OPENAL_LIB'] += ' alut'
-               del env2
-               root = ''
-               for root, dirs, files in os.walk(sconf_temp, topdown=False):
-                       for name in files:
-                               os.remove(os.path.join(root, name))
-                       for name in dirs:
-                               os.rmdir(os.path.join(root, name))
-               if root: os.rmdir(root)
-
 if len(B.quickdebug) > 0 and printdebug != 0:
        print B.bc.OKGREEN + "Buildings these libs with debug symbols:" + 
B.bc.ENDC
        for l in B.quickdebug:

Modified: branches/soc-2008-mxcurioni/config/linux2-config.py
===================================================================
--- branches/soc-2008-mxcurioni/config/linux2-config.py 2010-02-21 20:27:13 UTC 
(rev 27063)
+++ branches/soc-2008-mxcurioni/config/linux2-config.py 2010-02-21 21:47:52 UTC 
(rev 27064)
@@ -110,12 +110,9 @@
 
 # enable ffmpeg  support
 WITH_BF_FFMPEG = True  # -DWITH_FFMPEG
-# BF_FFMPEG = '#extern/ffmpeg'
-# BF_FFMPEG_LIB = ''
-# Uncomment the following two lines to use system's ffmpeg
 BF_FFMPEG = '/usr'
 BF_FFMPEG_LIB = 'avformat avcodec swscale avutil avdevice'
-BF_FFMPEG_INC = '${BF_FFMPEG}'
+BF_FFMPEG_INC = '${BF_FFMPEG}/include'
 BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
 
 # enable ogg, vorbis and theora in ffmpeg

Modified: branches/soc-2008-mxcurioni/intern/audaspace/intern/AUD_C-API.cpp
===================================================================
--- branches/soc-2008-mxcurioni/intern/audaspace/intern/AUD_C-API.cpp   
2010-02-21 20:27:13 UTC (rev 27063)
+++ branches/soc-2008-mxcurioni/intern/audaspace/intern/AUD_C-API.cpp   
2010-02-21 21:47:52 UTC (rev 27064)
@@ -761,6 +761,69 @@
        return length;
 }
 
+void AUD_startPlayback()
+{
+#ifdef WITH_JACK
+       AUD_JackDevice* device = dynamic_cast<AUD_JackDevice*>(AUD_device);
+       if(device)
+               device->startPlayback();
+#endif
+}
+
+void AUD_stopPlayback()
+{
+#ifdef WITH_JACK
+       AUD_JackDevice* device = dynamic_cast<AUD_JackDevice*>(AUD_device);
+       if(device)
+               device->stopPlayback();
+#endif
+}
+
+void AUD_seekSequencer(AUD_Handle* handle, float time)
+{
+#ifdef WITH_JACK
+       AUD_JackDevice* device = dynamic_cast<AUD_JackDevice*>(AUD_device);
+       if(device)
+               device->seekPlayback(time);
+       else
+#endif
+       {
+               AUD_device->seek(handle, time);
+       }
+}
+
+float AUD_getSequencerPosition(AUD_Handle* handle)
+{
+#ifdef WITH_JACK
+       AUD_JackDevice* device = dynamic_cast<AUD_JackDevice*>(AUD_device);
+       if(device)
+               return device->getPlaybackPosition();
+       else
+#endif
+       {
+               return AUD_device->getPosition(handle);
+       }
+}
+
+#ifdef WITH_JACK
+void AUD_setSyncCallback(AUD_syncFunction function, void* data)
+{
+       AUD_JackDevice* device = dynamic_cast<AUD_JackDevice*>(AUD_device);
+       if(device)
+               device->setSyncCallback(function, data);
+}
+#endif
+
+int AUD_doesPlayback()
+{
+#ifdef WITH_JACK
+       AUD_JackDevice* device = dynamic_cast<AUD_JackDevice*>(AUD_device);
+       if(device)
+               return device->doesPlayback();
+#endif
+       return -1;
+}
+
 #ifdef AUD_DEBUG_MEMORY
 int AUD_References(int count, const char* text)
 {

Modified: branches/soc-2008-mxcurioni/intern/audaspace/intern/AUD_C-API.h
===================================================================
--- branches/soc-2008-mxcurioni/intern/audaspace/intern/AUD_C-API.h     
2010-02-21 20:27:13 UTC (rev 27063)
+++ branches/soc-2008-mxcurioni/intern/audaspace/intern/AUD_C-API.h     
2010-02-21 21:47:52 UTC (rev 27064)
@@ -52,6 +52,7 @@
        typedef void AUD_Device;
        typedef void AUD_SequencerEntry;
        typedef float (*AUD_volumeFunction)(void*, void*, float);
+       typedef void (*AUD_syncFunction)(void*, int, float);
 #endif
 
 /**
@@ -383,6 +384,20 @@
 
 extern int AUD_readSound(AUD_Sound* sound, sample_t* buffer, int length);
 
+extern void AUD_startPlayback();
+
+extern void AUD_stopPlayback();
+
+extern void AUD_seekSequencer(AUD_Handle* handle, float time);
+
+extern float AUD_getSequencerPosition(AUD_Handle* handle);
+
+#ifdef WITH_JACK
+extern void AUD_setSyncCallback(AUD_syncFunction function, void* data);
+#endif
+
+extern int AUD_doesPlayback();
+
 #ifdef __cplusplus
 }
 #endif

Modified: branches/soc-2008-mxcurioni/intern/audaspace/jack/AUD_JackDevice.cpp
===================================================================
--- branches/soc-2008-mxcurioni/intern/audaspace/jack/AUD_JackDevice.cpp        
2010-02-21 20:27:13 UTC (rev 27063)
+++ branches/soc-2008-mxcurioni/intern/audaspace/jack/AUD_JackDevice.cpp        
2010-02-21 21:47:52 UTC (rev 27064)
@@ -31,7 +31,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-void* AUD_JackDevice::runThread(void* device)
+void* AUD_JackDevice::runMixingThread(void* device)
 {
        ((AUD_JackDevice*)device)->updateRingBuffers();
        return NULL;
@@ -45,10 +45,24 @@
        unsigned int channels = m_specs.channels;
        sample_t* buffer = m_buffer->getBuffer();
        float* deinterleave = m_deinterleavebuf->getBuffer();
+       jack_transport_state_t state;
+       jack_position_t position;
 
-       pthread_mutex_lock(&m_lock);
+       pthread_mutex_lock(&m_mixingLock);
        while(m_valid)
        {
+               if(m_sync > 1)
+               {
+                       if(m_syncFunc)
+                       {
+                               state = jack_transport_query(m_client, 
&position);
+                               m_syncFunc(m_syncFuncData, state != 
JackTransportStopped, position.frame / (float) m_specs.rate);
+                       }
+
+                       for(i = 0; i < channels; i++)
+                               jack_ringbuffer_reset(m_ringbuffers[i]);
+               }
+
                size = jack_ringbuffer_write_space(m_ringbuffers[0]);
                for(i = 1; i < channels; i++)
                        if((temp = 
jack_ringbuffer_write_space(m_ringbuffers[i])) < size)
@@ -71,9 +85,14 @@
                                        size = temp;
                }
 
-               pthread_cond_wait(&m_condition, &m_lock);
+               if(m_sync > 1)
+               {
+                       m_sync = 3;
+               }
+
+               pthread_cond_wait(&m_mixingCondition, &m_mixingLock);
        }
-       pthread_mutex_unlock(&m_lock);
+       pthread_mutex_unlock(&m_mixingLock);
 }
 
 int AUD_JackDevice::jack_mix(jack_nframes_t length, void *data)
@@ -83,27 +102,67 @@
        int count = device->m_specs.channels;
        char* buffer;
 
-       size_t temp;
-       size_t readsamples = 
jack_ringbuffer_read_space(device->m_ringbuffers[0]);
-       for(i = 1; i < count; i++)
-               if((temp = 
jack_ringbuffer_read_space(device->m_ringbuffers[i])) < readsamples)
-                       readsamples = temp;
+       if(device->m_sync)
+       {
+               // play silence while syncing
+               for(unsigned int i = 0; i < count; i++)
+                       memset(jack_port_get_buffer(device->m_ports[i], 
length), 0, length * sizeof(float));
+       }
+       else
+       {
+               size_t temp;
+               size_t readsamples = 
jack_ringbuffer_read_space(device->m_ringbuffers[0]);
+               for(i = 1; i < count; i++)
+                       if((temp = 
jack_ringbuffer_read_space(device->m_ringbuffers[i])) < readsamples)
+                               readsamples = temp;
 
-       readsamples = AUD_MIN(readsamples / sizeof(float), length);
+               readsamples = AUD_MIN(readsamples / sizeof(float), length);
 
-       for(unsigned int i = 0; i < count; i++)
-       {
-               buffer = (char*)jack_port_get_buffer(device->m_ports[i], 
length);
-               jack_ringbuffer_read(device->m_ringbuffers[i], buffer, 
readsamples * sizeof(float));
-               if(readsamples < length)
-                       memset(buffer + readsamples * sizeof(float), 0, (length 
- readsamples) * sizeof(float));
+               for(unsigned int i = 0; i < count; i++)
+               {
+                       buffer = 
(char*)jack_port_get_buffer(device->m_ports[i], length);
+                       jack_ringbuffer_read(device->m_ringbuffers[i], buffer, 
readsamples * sizeof(float));
+                       if(readsamples < length)
+                               memset(buffer + readsamples * sizeof(float), 0, 
(length - readsamples) * sizeof(float));
+               }
+
+               if(pthread_mutex_trylock(&(device->m_mixingLock)) == 0)
+               {
+                       pthread_cond_signal(&(device->m_mixingCondition));
+                       pthread_mutex_unlock(&(device->m_mixingLock));
+               }
        }
 
-       if(pthread_mutex_trylock(&(device->m_lock)) == 0)
+       return 0;
+}
+
+int AUD_JackDevice::jack_sync(jack_transport_state_t state, jack_position_t* 
pos, void* data)
+{
+       AUD_JackDevice* device = (AUD_JackDevice*)data;
+
+       if(state == JackTransportStopped)
+               return 1;
+
+       if(pthread_mutex_trylock(&(device->m_mixingLock)) == 0)
        {
-               pthread_cond_signal(&(device->m_condition));
-               pthread_mutex_unlock(&(device->m_lock));
+               if(device->m_sync > 2)
+               {
+                       if(device->m_sync == 3)
+                       {
+                               device->m_sync = 0;
+                               pthread_mutex_unlock(&(device->m_mixingLock));
+                               return 1;
+                       }
+               }
+               else
+               {
+                       device->m_sync = 2;
+                       pthread_cond_signal(&(device->m_mixingCondition));
+               }
+               pthread_mutex_unlock(&(device->m_mixingLock));
        }
+       else if(!device->m_sync)
+               device->m_sync = 1;
 
        return 0;
 }
@@ -134,6 +193,7 @@
        // set callbacks
        jack_set_process_callback(m_client, AUD_JackDevice::jack_mix, this);
        jack_on_shutdown(m_client, AUD_JackDevice::jack_shutdown, this);
+       jack_set_sync_callback(m_client, AUD_JackDevice::jack_sync, this);
 
        // register our output channels which are called ports in jack
        m_ports = new jack_port_t*[m_specs.channels]; AUD_NEW("jack_port")
@@ -170,6 +230,14 @@
 
        create();
 
+       m_valid = true;
+       m_playing = false;
+       m_sync = 0;
+       m_syncFunc = NULL;
+
+       pthread_mutex_init(&m_mixingLock, NULL);
+       pthread_cond_init(&m_mixingCondition, NULL);
+
        try
        {
                // activate the client
@@ -185,6 +253,8 @@
                for(unsigned int i = 0; i < specs.channels; i++)
                        jack_ringbuffer_free(m_ringbuffers[i]);
                delete[] m_ringbuffers; AUD_DELETE("jack_buffers")
+               pthread_mutex_destroy(&m_mixingLock);
+               pthread_cond_destroy(&m_mixingCondition);
                destroy();
                throw;
        }
@@ -199,16 +269,11 @@
                free(ports);
        }
 
-       m_valid = true;
-
-       pthread_mutex_init(&m_lock, NULL);
-       pthread_cond_init(&m_condition, NULL);
-
        pthread_attr_t attr;
        pthread_attr_init(&attr);
        pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
 
-       pthread_create(&m_thread, &attr, runThread, this);
+       pthread_create(&m_mixingThread, &attr, runMixingThread, this);
 
        pthread_attr_destroy(&attr);
 }

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to