Public Member Functions | Properties
SyphonClient Class Reference

#import <SyphonClient.h>

Public Member Functions

(id) - initWithServerDescription:options:newFrameHandler:
(SyphonImage *) - newFrameImageForContext:
(void) - stop

Properties

BOOL isValid
NSDictionary * serverDescription
BOOL hasNewFrame

Detailed Description

SyphonClient makes available frames from a remote SyphonServer. A client is created from a NSDictionary which describes the server. Typically this is obtained from the shared SyphonServerDirectory, or one of Syphon's notifications.

SyphonClient allows for lazy drawing by the use of a new-frame-handler. Using a handler you can perform drawing without using a timer or polling, achieving frame-accuracy with the minimum of overhead. Alternatively, if your application uses a traditional display link or timer, you can use the hasNewFrame property to make decisions about work you may need to do. Irrespective of the presence of new frames, you can draw with a SyphonClient at any time.

It is safe to access instances of this class across threads.


Member Function Documentation

- (id) initWithServerDescription: (NSDictionary *)  description
options: (NSDictionary *)  options
newFrameHandler: (SyphonClient *client)  handler 

Returns a new client instance for the described server. You should check the isValid property after initialization to ensure a connection was made to the server.

Parameters:
descriptionTypically acquired from the shared SyphonServerDirectory, or one of Syphon's notifications.
optionsCurrently ignored. May be nil.
handlerA block which is invoked when a new frame becomes available. handler may be nil. This block may be invoked on a thread other than that on which the client was created.
Returns:
A newly initialized SyphonClient object, or nil if a client could not be created.
- (SyphonImage *) newFrameImageForContext: (CGLContextObj)  cgl_ctx

Returns a SyphonImage representing the current output from the server. The texture associated with the image may continue to update when you draw with it, but you should not depend on that behaviour: call this method every time you wish to access the current server frame. This object may have GPU resources associated with it and you should release it as soon as you are finished drawing with it.

This method does not lock the CGL context. If there is a chance other threads may use the context during calls to this method, bracket it with calls to CGLLockContext() and CGLUnlockContext().

Parameters:
cgl_ctxThe CGL context in which the SyphonImage will be valid.
Returns:
A SyphonImage representing the live output from the server. YOU ARE RESPONSIBLE FOR RELEASING THIS OBJECT when you are finished with it.
- (void) stop

Stops the client from receiving any further frames from the server. In garbage-collected applications you must call this method prior to removing strong references to the client. In non-garbage-collected applications, use of this method is optional and releasing all references to the client has the same effect.


Property Documentation

- (BOOL) isValid [read, assign]

A client is valid if it has a working connection to a server. Once this returns NO, the SyphonClient will not yield any further frames.

- (NSDictionary*) serverDescription [read, assign]

Returns a dictionary with a description of the server the client is attached to. See SyphonServerDirectory for the keys this dictionary contains

- (BOOL) hasNewFrame [read, assign]

Returns YES if the server has output a new frame since the last time newFrameImageForContext: was called for this client, NO otherwise.

 All Classes Functions Variables Properties