Revision: 26477
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26477
Author:   theeth
Date:     2010-01-31 19:32:19 +0100 (Sun, 31 Jan 2010)

Log Message:
-----------
-setaudio argument to force an audio device.

This also means that only -s and -S are accepted to set start frame and scene 
(before, it would accept anything that started with s or S, you could have done 
blender -b file.blend -super 1 -Science "scene 2").

We really need better argument parsing...

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_sound.h
    trunk/blender/source/blender/blenkernel/intern/sound.c
    trunk/blender/source/creator/creator.c

Modified: trunk/blender/source/blender/blenkernel/BKE_sound.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sound.h 2010-01-31 18:06:50 UTC 
(rev 26476)
+++ trunk/blender/source/blender/blenkernel/BKE_sound.h 2010-01-31 18:32:19 UTC 
(rev 26477)
@@ -42,6 +42,7 @@
 void sound_exit();
 
 void sound_force_device(int device);
+int sound_define_from_str(char *str);
 
 struct bSound* sound_new_file(struct Main *main, char* filename);
 

Modified: trunk/blender/source/blender/blenkernel/intern/sound.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sound.c      2010-01-31 
18:06:50 UTC (rev 26476)
+++ trunk/blender/source/blender/blenkernel/intern/sound.c      2010-01-31 
18:32:19 UTC (rev 26477)
@@ -33,6 +33,20 @@
 
 static int force_device = -1;
 
+int sound_define_from_str(char *str)
+{
+       if (BLI_strcaseeq(str, "NULL"))
+               return AUD_NULL_DEVICE;
+       if (BLI_strcaseeq(str, "SDL"))
+               return AUD_SDL_DEVICE;
+       if (BLI_strcaseeq(str, "OPENAL"))
+               return AUD_OPENAL_DEVICE;
+       if (BLI_strcaseeq(str, "JACK"))
+               return AUD_JACK_DEVICE;
+
+       return -1;
+}
+
 void sound_force_device(int device)
 {
        force_device = device;

Modified: trunk/blender/source/creator/creator.c
===================================================================
--- trunk/blender/source/creator/creator.c      2010-01-31 18:06:50 UTC (rev 
26476)
+++ trunk/blender/source/creator/creator.c      2010-01-31 18:32:19 UTC (rev 
26477)
@@ -221,6 +221,8 @@
        printf ("  -nojoystick\tDisable joystick support\n");
        printf ("  -noglsl\tDisable GLSL shading\n");
        printf ("  -noaudio\tForce sound system to None\n");
+       printf ("  -setaudio\tForce sound system to a specific device\n");
+       printf ("    \tNULL SDL OPENAL JACK\n");
        printf ("  -h\t\tPrint this help text\n");
        printf ("  -y\t\tDisable automatic python script execution (pydrivers, 
pyconstraints, pynodes)\n");
        printf ("  -P <filename>\tRun the given Python script (filename or 
Blender Text)\n");
@@ -476,7 +478,7 @@
                                        break;
                                case 'n':
                                case 'N':
-                                       if (BLI_strcasecmp(argv[a], 
"-nojoystick") == 0) {
+                                       if (BLI_strcaseeq(argv[a], 
"-nojoystick")) {
                                                /**
                                                        don't initialize 
joysticks if user doesn't want to use joysticks
                                                        failed joystick 
initialization delays over 5 seconds, before game engine start
@@ -484,11 +486,18 @@
                                                
SYS_WriteCommandLineInt(syshandle,"nojoystick",1);
                                                if (G.f & G_DEBUG) 
printf("disabling nojoystick\n");
                                        }
-                                       else if (BLI_strcasecmp(argv[a], 
"-noglsl") == 0)
+                                       else if (BLI_strcaseeq(argv[a], 
"-noglsl"))
                                                GPU_extensions_disable();
-                                       else if (BLI_strcasecmp(argv[a], 
"-noaudio") == 0)
+                                       else if (BLI_strcaseeq(argv[a], 
"-noaudio"))
                                                sound_force_device(0);
                                        break;
+                               case 's':
+                               case 'S':
+                                       if (BLI_strcaseeq(argv[a], "-setaudio") 
&& a + 1 < argc) {
+                                               a++;
+                                               
sound_force_device(sound_define_from_str(argv[a]));
+                                       }
+                                       break;
                                }
                        }
                }
@@ -526,9 +535,16 @@
                                        break;
                                case 'n':
                                case 'N':
-                                       if (BLI_strcasecmp(argv[a], "-noaudio") 
== 0)
+                                       if (BLI_strcaseeq(argv[a], "-noaudio"))
                                                sound_force_device(0);
                                        break;
+                               case 's':
+                               case 'S':
+                                       if (BLI_strcaseeq(argv[a], "-setaudio") 
&& a + 1 < argc) {
+                                               a++;
+                                               
sound_force_device(sound_define_from_str(argv[a]));
+                                       }
+                                       break;
                                }
                        }
                }
@@ -664,20 +680,30 @@
                                }
                                break;
                        case 'S':
-                               if(++a < argc) {
-                                       set_scene_name(argv[a]);
+                               if (BLI_strcaseeq(argv[a], "-setaudio") && a + 
1 < argc) {
+                                       a++; /* already taken care of, just 
need to swallow the next argument */
                                }
+                               else if (argv[a][2] == '\0') {
+                                       if(++a < argc) {
+                                               set_scene_name(argv[a]);
+                                       }
+                               }
                                break;
                        case 's':
-                               a++;
-                               if (CTX_data_scene(C)) {
-                                       Scene *scene= CTX_data_scene(C);
-                                       if (a < argc) {
-                                               int frame = atoi(argv[a]);
-                                               (scene->r.sfra) = 
MIN2(MAXFRAME, MAX2(1, frame));
+                               if (BLI_strcaseeq(argv[a], "-setaudio") && a + 
1 < argc) {
+                                       a++; /* already taken care of, just 
need to swallow the next argument */
+                               }
+                               else if (argv[a][2] == '\0') {
+                                       a++;
+                                       if (CTX_data_scene(C)) {
+                                               Scene *scene= CTX_data_scene(C);
+                                               if (a < argc) {
+                                                       int frame = 
atoi(argv[a]);
+                                                       (scene->r.sfra) = 
MIN2(MAXFRAME, MAX2(1, frame));
+                                               }
+                                       } else {
+                                               printf("\nError: no blend 
loaded. cannot use '-s'.\n");
                                        }
-                               } else {
-                                       printf("\nError: no blend loaded. 
cannot use '-s'.\n");
                                }
                                break;
                        case 'e':


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

Reply via email to