Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiri Hnidek <jiri.hnidek@tul.cz>2005-11-05 00:45:44 +0300
committerJiri Hnidek <jiri.hnidek@tul.cz>2005-11-05 00:45:44 +0300
commit1d1fd7cd7084efa6ba38edfbadc9dc34f016eab1 (patch)
tree30a0bcd07be2a9faa8873973f50ec035b3559b4c /source/blender/src/edittime.c
parenta602dcfe5f5a9ed1f6ff24b6cea2b0c6b09987c4 (diff)
- small optimalisation of Matt's code, Markers are copied in one loop,
Matt, admire function BLI_addhead() ;-)
Diffstat (limited to 'source/blender/src/edittime.c')
-rw-r--r--source/blender/src/edittime.c39
1 files changed, 9 insertions, 30 deletions
diff --git a/source/blender/src/edittime.c b/source/blender/src/edittime.c
index 2e5aa228651..26aa3e1cbae 100644
--- a/source/blender/src/edittime.c
+++ b/source/blender/src/edittime.c
@@ -139,45 +139,24 @@ void rename_timeline_marker(void)
/* duplicate selected TimeMarkers */
void duplicate_timeline_marker(void)
{
- TimeMarker *marker, *selmarker, *newmarker;
- ListBase selmarkers;
- char name[64];
-
- selmarkers.first= selmarkers.last= NULL;
-
- /* make a temporary list of the selected markers to go through, so we don't do
- * anything stupid to the ones in the scene */
+ TimeMarker *marker, *newmarker;
+
+ /* go through the list of markers, duplicate selected markers and add duplicated copies
+ * to the begining of the list (unselect original markers) */
for(marker= G.scene->markers.first; marker; marker= marker->next) {
if(marker->flag & SELECT){
+ /* unselect selected marker */
marker->flag &= ~SELECT;
-
- selmarker = MEM_callocN(sizeof(TimeMarker), "TimeMarker");
- selmarker->flag= SELECT;
- selmarker->frame= marker->frame;
- BLI_strncpy(selmarker->name, marker->name, sizeof(marker->name));
-
- BLI_addtail(&selmarkers, selmarker);
- }
- }
-
- /* go through our temporary list of markers, duplicate them,
- * and add them back to the scene, selected, ready for grabbing */
- for(marker= selmarkers.first; marker; marker= marker->next) {
- if(marker->flag & SELECT){
- /* make a new marker at the same spot */
+ /* create and set up new marker */
newmarker = MEM_callocN(sizeof(TimeMarker), "TimeMarker");
+ newmarker->flag= SELECT;
newmarker->frame= marker->frame;
BLI_strncpy(newmarker->name, marker->name, sizeof(marker->name));
- /* select it */
- newmarker->flag= SELECT;
-
- BLI_addtail(&(G.scene->markers), newmarker);
-
+ /* new marker is added to the begining of list */
+ BLI_addhead(&(G.scene->markers), newmarker);
}
}
- BLI_freelistN(&selmarkers);
-
timeline_grab('g', 0);
}