Merging r38615 through r38636 from trunk into soc-2011-tomato
authorSergey Sharybin <sergey.vfx@gmail.com>
Sat, 23 Jul 2011 18:42:58 +0000 (18:42 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Sat, 23 Jul 2011 18:42:58 +0000 (18:42 +0000)
intern/audaspace/OpenAL/AUD_OpenALDevice.cpp
intern/audaspace/OpenAL/AUD_OpenALDevice.h
release/scripts/startup/bl_ui/space_info.py
release/scripts/startup/bl_ui/space_view3d.py
source/blender/editors/object/object_edit.c

index b9e30bbf62aa94897b901f29962de288a8820859..71e7b7677e888a7ae35d52b1a3223ef050526ed4 100644 (file)
@@ -105,12 +105,15 @@ void* AUD_openalRunThread(void* device)
        return NULL;
 }
 
-void AUD_OpenALDevice::start()
+void AUD_OpenALDevice::start(bool join)
 {
        lock();
 
        if(!m_playing)
        {
+               if(join)
+                       pthread_join(m_thread, NULL);
+
                pthread_attr_t attr;
                pthread_attr_init(&attr);
                pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
@@ -271,8 +274,8 @@ void AUD_OpenALDevice::updateStreams()
                // stop thread
                if(m_playingSounds->empty() || (cerr != ALC_NO_ERROR))
                {
-                       unlock();
                        m_playing = false;
+                       unlock();
                        pthread_exit(NULL);
                }
 
@@ -366,6 +369,8 @@ AUD_OpenALDevice::AUD_OpenALDevice(AUD_DeviceSpecs specs, int buffersize)
        pthread_mutex_init(&m_mutex, &attr);
 
        pthread_mutexattr_destroy(&attr);
+
+       start(false);
 }
 
 AUD_OpenALDevice::~AUD_OpenALDevice()
@@ -414,13 +419,8 @@ AUD_OpenALDevice::~AUD_OpenALDevice()
        alcProcessContext(m_context);
 
        // wait for the thread to stop
-       if(m_playing)
-       {
-               unlock();
-               pthread_join(m_thread, NULL);
-       }
-       else
-               unlock();
+       unlock();
+       pthread_join(m_thread, NULL);
 
        delete m_playingSounds;
        delete m_pausedSounds;
index 3bbbe85d7e6480930f6e3b11a0723f2621c68a8c..127f69beca8bc5d3ef00bd88302f58de7204d2eb 100644 (file)
@@ -106,7 +106,7 @@ private:
        /**
         * Starts the streaming thread.
         */
-       void start();
+       void start(bool join = true);
 
        /**
         * Checks if a handle is valid.
index 2b12e75564c0b4d4c01c37aa9e9e70348422b29e..cda37b3119aaf6bf58d78c44dad85838b5e27856 100644 (file)
@@ -60,8 +60,10 @@ class INFO_HT_header(bpy.types.Header):
         layout.template_running_jobs()
 
         layout.template_reports_banner()
-
-        layout.label(text=scene.statistics())
+        
+        row = layout.row(align=True)
+        row.operator("wm.splash", text="", icon='BLENDER', emboss=False)
+        row.label(text=scene.statistics())
 
         # XXX: this should be right-aligned to the RHS of the region
         layout.operator("wm.window_fullscreen_toggle", icon='FULLSCREEN_ENTER', text="")
index c5f1e0ff7afcaedd8f8df77b696235c466fb2104..93cef8804e14106e719ff3771bcea107dc5e8910 100644 (file)
@@ -68,7 +68,7 @@ class VIEW3D_HT_header(bpy.types.Header):
         if obj:
             # Particle edit
             if obj.mode == 'PARTICLE_EDIT':
-                row.prop(toolsettings.particle_edit, "select_mode", text="", expand=True, toggle=True)
+                row.prop(toolsettings.particle_edit, "select_mode", text="", expand=True)
 
             # Occlude geometry
             if view.viewport_shade in {'SOLID', 'SHADED', 'TEXTURED'} and (obj.mode == 'PARTICLE_EDIT' or (obj.mode == 'EDIT' and obj.type == 'MESH')):
index 29a740affc534051240f5303cda2208fd106211c..395705dc029c8b501d156d2cfaf79438cc16a707 100644 (file)
@@ -2162,16 +2162,20 @@ static int game_property_copy_exec(bContext *C, wmOperator *op)
                        } CTX_DATA_END;
                }
        }
-       else if (ELEM(type, COPY_PROPERTIES_REPLACE, COPY_PROPERTIES_MERGE)) {
+
+       else {
                CTX_DATA_BEGIN(C, Object*, ob_iter, selected_editable_objects) {
                        if (ob != ob_iter) {
                                if (ob->data != ob_iter->data){
-                                       if (type == 2) {/* merge */
+                                       if (type == COPY_PROPERTIES_REPLACE)
+                                               copy_properties( &ob_iter->prop, &ob->prop );
+
+                                       /* merge - the default when calling with no argument */
+                                       else {
                                                for(prop = ob->prop.first; prop; prop= prop->next ) {
                                                        set_ob_property(ob_iter, prop);
                                                }
-                                       } else /* replace */
-                                               copy_properties( &ob_iter->prop, &ob->prop );
+                                       }
                                }
                        }
                }