Opened 8 years ago

Closed 7 years ago

#7351 closed bug (fixed)

BGameSoundDevice is broken on hybrid installs

Reported by: pulkomandy Owned by: leavengood
Priority: normal Milestone: R1
Component: Kits/Game Kit Version: R1/Development
Keywords: Cc:
Blocked By: Blocking:
Has a Patch: yes Platform: All

Description

The BGameSoundDevice class is at te core of the sound part of the game kit. This class creates its own mixer and does not use the system one. According to a TODO in the code, this is bad practise.

On a gcc2h system, a gcc4 compiled app will not work, because :

  • The app is linked with libgame, which itself links libmedia
  • This class tries to create a mixer, which loads the mixer add on

As a consequence, the (gcc2) mixer add-on gets loaded in a gcc4 app. This does not work.

BMediaRoster::InstantiateDormantNode: addon-id 6, flavor_id 0, flags 0x0
resolve symbol "__tf11BTimeSource" returned: -2147478780
DormantNodeManager::LoadAddon: loading "/boot/system/add-ons/media/mixer.media_addon" failed: Symbol not found
DormantNodeManager::GetAddon: can't load add-on 6 from path /boot/system/add-ons/media/mixer.media_addon
BMediaRosterEx::InstantiateDormantNode: GetAddon failed

This makes the whole BGameSound stuff basically unuseable in hybrid systems. The fix is to remove this mixer from the class, or to make it use a gcc4 one when needed (like we do for translators addons).

Attachments (1)

SystemMixer.diff (8.7 KB) - added by pulkomandy 8 years ago.
Attempt at patching it

Download all attachments as: .zip

Change History (5)

comment:1 Changed 8 years ago by leavengood

Owner: changed from jackburton to leavengood
Status: newassigned

Taking ownership as I'll probably look at this before Stefano.

Changed 8 years ago by pulkomandy

Attachment: SystemMixer.diff added

Attempt at patching it

comment:2 Changed 8 years ago by pulkomandy

Has a Patch: set

comment:3 Changed 8 years ago by pulkomandy

Here is my attempt at a patch for this. Basically I removed the whole connection stuff in this class and made the sounds in the array connect directly to the system mixer.

This gets us a bit further, but still no sound output yet. I think each of the sounds need to be started and otherwise managed directly now ?

I'd appreciate if someone else could have a look at my code, since I'm not very familiar with media kit stuff (and wanted to use the game kit classes to avoid messing with it... :))

comment:4 Changed 7 years ago by pulkomandy

Resolution: fixed
Status: assignedclosed

Applied in hrev43127, since it seems to work fine.

Note: See TracTickets for help on using tickets.