|
|
|
@@ -18237,8 +18237,9 @@ void AudioThumbnail::setSource (InputSource* const newSource) |
|
|
|
|
|
|
|
clear(); |
|
|
|
|
|
|
|
if (! (cache.loadThumb (*this, newSource->hashCode()) |
|
|
|
&& isFullyLoaded())) |
|
|
|
if (newSource != 0 |
|
|
|
&& ! (cache.loadThumb (*this, newSource->hashCode()) |
|
|
|
&& isFullyLoaded())) |
|
|
|
{ |
|
|
|
{ |
|
|
|
const ScopedLock sl (readerLock); |
|
|
|
@@ -63966,7 +63967,11 @@ private: |
|
|
|
const Rectangle mon (Desktop::getInstance() |
|
|
|
.getMonitorAreaContaining ((minX + maxX) / 2, |
|
|
|
(minY + maxY) / 2, |
|
|
|
#if JUCE_MAC |
|
|
|
true)); |
|
|
|
#else |
|
|
|
false)); // on windows, don't stop the menu overlapping the taskbar |
|
|
|
#endif |
|
|
|
|
|
|
|
int x, y, widthToUse, heightToUse; |
|
|
|
layoutMenuItems (mon.getWidth() - 24, widthToUse, heightToUse); |
|
|
|
@@ -268621,12 +268626,19 @@ using namespace JUCE_NAMESPACE; |
|
|
|
|
|
|
|
- (void) performCallback: (id) info |
|
|
|
{ |
|
|
|
CallbackMessagePayload* pl = (CallbackMessagePayload*) info; |
|
|
|
if ([info isKindOfClass: [NSData class]]) |
|
|
|
{ |
|
|
|
CallbackMessagePayload* pl = (CallbackMessagePayload*) [((NSData*) info) bytes]; |
|
|
|
|
|
|
|
if (pl != 0) |
|
|
|
if (pl != 0) |
|
|
|
{ |
|
|
|
pl->result = (*pl->function) (pl->parameter); |
|
|
|
pl->hasBeenExecuted = true; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
pl->result = (*pl->function) (pl->parameter); |
|
|
|
pl->hasBeenExecuted = true; |
|
|
|
jassertfalse // should never get here! |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@@ -268725,6 +268737,8 @@ void* MessageManager::callFunctionOnMessageThread (MessageCallbackFunction* call |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
const ScopedAutoReleasePool pool; |
|
|
|
|
|
|
|
CallbackMessagePayload cmp; |
|
|
|
cmp.function = callback; |
|
|
|
cmp.parameter = data; |
|
|
|
@@ -268732,7 +268746,8 @@ void* MessageManager::callFunctionOnMessageThread (MessageCallbackFunction* call |
|
|
|
cmp.hasBeenExecuted = false; |
|
|
|
|
|
|
|
[juceAppDelegate performSelectorOnMainThread: @selector (performCallback:) |
|
|
|
withObject: (id) &cmp |
|
|
|
withObject: [NSData dataWithBytesNoCopy: &cmp |
|
|
|
length: sizeof (cmp)] |
|
|
|
waitUntilDone: YES]; |
|
|
|
|
|
|
|
return cmp.result; |
|
|
|
|