PDA

View Full Version : Non-composited OSX Hosts?


cc_
02-26-2010, 08:34 AM
I've been implementing PromptUserInput() from OSX hosts that use Carbon - like Ableton Live 7. Live uses composited windows, so that's the case I've done.

Anyone know a host that uses non-composited windows so I can try that case too?

MaxBro
05-26-2010, 07:17 AM
CC_ Have you found any non-composited host?

cc_
05-27-2010, 12:19 AM
Yes, AU plugins under Reaper 3.

olilarkin
03-09-2011, 03:42 PM
did you find any more?

with au plugins in reaper the textfield input mod here (e.g. that is in Tale's) repo is flickering like mad in the example plugin. It's ok until you start sending audio to the plugin.

I have not been able to solve it yet. I don't care so much about reaper (since the vst version can be used there).

oli

olilarkin
03-30-2011, 01:59 PM
max msp 4.x and any vst hosts built with it can be added to the list

Tale
03-30-2011, 03:41 PM
with au plugins in reaper the textfield input mod here (e.g. that is in Tale's) repo is flickering like mad in the example plugin. It's ok until you start sending audio to the plugin.
Isn't the flickering in the example plug-in caused by calling SetControlFromPlug() in ProcessDoubleReplacing() all the time?

olilarkin
03-30-2011, 04:25 PM
Isn't the flickering in the example plug-in caused by calling SetControlFromPlug() in ProcessDoubleReplacing() all the time?

SetControlFromPlug will cause that control to be dirtied. The rect of any control that is dirtied will be added to the area that is redrawn (see IGraphics::IsDirty() ). This area will span from the leftmost control that is dirtied to the rightmost control that is dirtied.

at the moment, with non composited carbon, when the area on which a text entry sits is redrawn, it will flicker! That can potentially be quite a large area.

In your plugin ComboV i noticed that if you right click a slider to bring up a text entry and then press a midi key, it will flicker.

I have another problem with non composited carbon, in that if i put up an about page, which is a bitmap overlay the same dimensions as my plugin and is the last control added, if there are still other controls behind that are dirtied, only part of the bitmap is drawn. This doesn't happen with cocoa or composited carbon.

anyway after spending far too long looking at it I have decided that for carbon non composited hosts, I disable text entry and set the drawing rect to the whole plugin window. Not ideal, but it's really a minority of (old) hosts that are affected.

Tale
04-01-2011, 02:42 AM
I think the flickering is caused by CarbonTimerHandler(), which for non-composited windows always redraws all controls. For composited windows it redraws only the controls that (partly) fall within rectangle that needs updating.

int h = _this->mGraphicsMac->Height();
SetRectRgn(_this->mRgn, r.L, h - r.B, r.R, h - r.T);
UpdateControls(_this->mWindow, 0);// _this->mRgn);

I have tried to change this to

UpdateControls(_this->mWindow, _this->mRgn);

but then it draws duplicate controls. I haven't yet found out why.