protected void addMixer(Mixer mixer) {
   if (TDebug.TraceMixerProvider) {
     TDebug.out("TMixerProvider.addMixer(): begin");
   }
   MixerProviderStruct struct = getMixerProviderStruct();
   synchronized (struct) {
     struct.m_mixers.add(mixer);
     if (struct.m_defaultMixer == null) {
       struct.m_defaultMixer = mixer;
     }
   }
   if (TDebug.TraceMixerProvider) {
     TDebug.out("TMixerProvider.addMixer(): end");
   }
 }
 protected void removeMixer(Mixer mixer) {
   if (TDebug.TraceMixerProvider) {
     TDebug.out("TMixerProvider.removeMixer(): begin");
   }
   MixerProviderStruct struct = getMixerProviderStruct();
   synchronized (struct) {
     struct.m_mixers.remove(mixer);
     // TODO: should search for another mixer
     if (struct.m_defaultMixer == mixer) {
       struct.m_defaultMixer = null;
     }
   }
   if (TDebug.TraceMixerProvider) {
     TDebug.out("TMixerProvider.removeMixer(): end");
   }
 }