27 static const TUid KUidAudioServer = {KUidA3fAudioServerUID}; |
27 static const TUid KUidAudioServer = {KUidA3fAudioServerUID}; |
28 const TInt KRetries = 5; |
28 const TInt KRetries = 5; |
29 const TInt KInitialTime = 100000; //100ms |
29 const TInt KInitialTime = 100000; //100ms |
30 const TInt KTimeIncrement = 50000; // 50ms |
30 const TInt KTimeIncrement = 50000; // 50ms |
31 |
31 |
|
32 _LIT_SECURITY_POLICY_C1(KServerHasDRMRights, ECapabilityDRM); |
|
33 |
|
34 // ----------------------------------------------------------------------------- |
|
35 // RMMFAudioServerProxy::OpenSessionToTrustedAudioServer |
|
36 // |
|
37 // ----------------------------------------------------------------------------- |
|
38 // |
|
39 TInt RMMFAudioServerProxy::OpenSessionToTrustedAudioServer() |
|
40 { |
|
41 return CreateSession(KAudioServerName, |
|
42 TVersion(KMMFAudioServerVersion, |
|
43 KMMFAudioServerMinorVersionNumber, |
|
44 KMMFAudioServerBuildVersionNumber), |
|
45 -1, // Global pool |
|
46 EIpcSession_Unsharable, |
|
47 &KServerHasDRMRights, |
|
48 NULL); // NULL required for synchronous behaviour |
|
49 } |
|
50 |
32 // ----------------------------------------------------------------------------- |
51 // ----------------------------------------------------------------------------- |
33 // RMMFAudioServerProxy::Open |
52 // RMMFAudioServerProxy::Open |
34 // |
53 // |
35 // ----------------------------------------------------------------------------- |
54 // ----------------------------------------------------------------------------- |
36 // |
55 // |
37 EXPORT_C TInt RMMFAudioServerProxy::Open() |
56 EXPORT_C TInt RMMFAudioServerProxy::Open() |
38 { |
57 { |
39 const TUidType serverUid(KNullUid,KNullUid,KUidAudioServer); |
58 const TUidType serverUid(KNullUid,KNullUid,KUidAudioServer); |
40 // Assume the server is already running and attempt to create a session |
59 // Assume the server is already running and attempt to create a session |
41 // 4 message slots |
60 TInt err = OpenSessionToTrustedAudioServer(); |
42 TInt err = CreateSession(KAudioServerName, |
61 |
43 TVersion(KMMFAudioServerVersion, |
|
44 KMMFAudioServerMinorVersionNumber, |
|
45 KMMFAudioServerBuildVersionNumber)); |
|
46 |
|
47 if(err == KErrNotFound) |
62 if(err == KErrNotFound) |
48 { |
63 { |
49 // Server not running |
64 // Server not running |
50 // Construct the server binary name |
65 // Construct the server binary name |
51 RProcess server; |
66 RProcess server; |
90 TInt waitTime = KInitialTime; |
105 TInt waitTime = KInitialTime; |
91 for(TInt retries=0;retries<KRetries;retries++) |
106 for(TInt retries=0;retries<KRetries;retries++) |
92 { |
107 { |
93 User::After(waitTime); |
108 User::After(waitTime); |
94 waitTime+=KTimeIncrement; |
109 waitTime+=KTimeIncrement; |
95 err = CreateSession(KAudioServerName, TVersion(KMMFAudioServerVersion, |
110 err = OpenSessionToTrustedAudioServer(); |
96 KMMFAudioServerMinorVersionNumber, |
111 |
97 KMMFAudioServerBuildVersionNumber)); |
|
98 if(err==KErrNone) |
112 if(err==KErrNone) |
99 { |
113 { |
100 //Session created successfully |
114 //Session created successfully |
101 break; |
115 break; |
102 } |
116 } |
103 } |
117 } |
104 } |
118 } |
105 else |
119 else |
106 { |
120 { |
107 // Create the root server session |
121 // Create the root server session |
108 err = CreateSession(KAudioServerName, |
122 err = OpenSessionToTrustedAudioServer(); |
109 TVersion(KMMFAudioServerVersion, |
|
110 KMMFAudioServerMinorVersionNumber, |
|
111 KMMFAudioServerBuildVersionNumber)); |
|
112 } |
123 } |
113 } |
124 } |
114 return err; |
125 return err; |
115 } |
126 } |
116 |
127 |