Lines 217-223
Link Here
|
217 |
OSL_ASSERT(tid.getLength() != 0 && oid.getLength() != 0 && member.is()); |
217 |
OSL_ASSERT(tid.getLength() != 0 && oid.getLength() != 0 && member.is()); |
218 |
css::uno::TypeDescription t(type); |
218 |
css::uno::TypeDescription t(type); |
219 |
sal_Int32 functionId = 0; |
219 |
sal_Int32 functionId = 0; |
220 |
bool forceSynchronous = false; |
|
|
221 |
member.makeComplete(); |
220 |
member.makeComplete(); |
222 |
switch (member.get()->eTypeClass) { |
221 |
switch (member.get()->eTypeClass) { |
223 |
case typelib_TypeClass_INTERFACE_ATTRIBUTE: |
222 |
case typelib_TypeClass_INTERFACE_ATTRIBUTE: |
Lines 249-256
Link Here
|
249 |
t.makeComplete(); |
248 |
t.makeComplete(); |
250 |
functionId = mtd->pInterface->pMapMemberIndexToFunctionIndex[ |
249 |
functionId = mtd->pInterface->pMapMemberIndexToFunctionIndex[ |
251 |
mtd->aBase.nPosition]; |
250 |
mtd->aBase.nPosition]; |
252 |
forceSynchronous = mtd->bOneWay && |
|
|
253 |
functionId != SPECIAL_FUNCTION_ID_RELEASE; |
254 |
break; |
251 |
break; |
255 |
} |
252 |
} |
256 |
default: |
253 |
default: |
Lines 268-286
Link Here
|
268 |
bool newType = !(lastType_.is() && t.equals(lastType_)); |
265 |
bool newType = !(lastType_.is() && t.equals(lastType_)); |
269 |
bool newOid = oid != lastOid_; |
266 |
bool newOid = oid != lastOid_; |
270 |
bool newTid = tid != lastTid_; |
267 |
bool newTid = tid != lastTid_; |
271 |
if (newType || newOid || newTid || forceSynchronous || functionId > 0x3FFF) |
268 |
if (newType || newOid || newTid || functionId > 0x3FFF) |
272 |
// > 14 bit function ID |
269 |
// > 14 bit function ID |
273 |
{ |
270 |
{ |
274 |
Marshal::write8( |
271 |
Marshal::write8( |
275 |
&buf, |
272 |
&buf, |
276 |
(0xC0 | (newType ? 0x20 : 0) | (newOid ? 0x10 : 0) | |
273 |
(0xC0 | (newType ? 0x20 : 0) | (newOid ? 0x10 : 0) | |
277 |
(newTid ? 0x08 : 0) | (functionId > 0xFF ? 0x04 : 0) | |
274 |
(newTid ? 0x08 : 0) | (functionId > 0xFF ? 0x04 : 0))); |
278 |
(forceSynchronous ? 0x01 : 0))); |
|
|
279 |
// bit 7: LONGHEADER, bit 6: REQUEST, bit 5: NEWTYPE, bit 4: NEWOID, |
275 |
// bit 7: LONGHEADER, bit 6: REQUEST, bit 5: NEWTYPE, bit 4: NEWOID, |
280 |
// bit 3: NEWTID, bit 2: FUNCTIONID16, bit 0: MOREFLAGS |
276 |
// bit 3: NEWTID, bit 2: FUNCTIONID16, bit 0: MOREFLAGS |
281 |
if (forceSynchronous) { |
|
|
282 |
Marshal::write8(&buf, 0xC0); // bit 7: MUSTREPLY, bit 6: SYNCHRONOUS |
283 |
} |
284 |
if (functionId <= 0xFF) { |
277 |
if (functionId <= 0xFF) { |
285 |
Marshal::write8(&buf, static_cast< sal_uInt8 >(functionId)); |
278 |
Marshal::write8(&buf, static_cast< sal_uInt8 >(functionId)); |
286 |
} else { |
279 |
} else { |