/*---------------------------------------------------------------------- | CrossFader_Activate +---------------------------------------------------------------------*/ BLT_METHOD CrossFader_Activate(BLT_MediaNodeInstance* instance, BLT_Stream* stream) { ATX_Properties settings; CrossFader* fader = (CrossFader*)instance; /* stop listening for settings on the current stream, if any */ if (!ATX_OBJECT_IS_NULL(&fader->context) && fader->listener_handle != NULL) { if (BLT_SUCCEEDED(BLT_Core_GetSettings(&fader->base.core, &settings))) { ATX_Properties_RemoveListener(&settings, fader->listener_handle); } fader->listener_handle = NULL; } /* keep a reference to the stream */ fader->context = *stream; /* listen to settings on the new stream */ if (BLT_SUCCEEDED(BLT_Core_GetSettings(&fader->base.core, &settings))) { ATX_PropertyListener me; ATX_INSTANCE(&me) = (ATX_PropertyListenerInstance*)fader; ATX_INTERFACE(&me) = &CrossFader_ATX_PropertyListenerInterface; ATX_Properties_AddListener(&settings, "SomeSetting", &me, &fader->listener_handle); } return BLT_SUCCESS; }
/*---------------------------------------------------------------------- | ConnectClient +---------------------------------------------------------------------*/ static ATX_Result ConnectClient(ATX_ClientSocket* client, char* hostname, ATX_SocketPort port, ATX_ByteStream* stream) { ATX_Socket socket; ATX_Result result; ATX_Debug("connecting to %s on port %d\n", hostname, port); /* connect client */ result = ATX_ClientSocket_Connect(client, hostname, port, 10000); if (result != ATX_SUCCESS) { ATX_Debug("ERROR: connection failed (%d)\n", result); return result; } ATX_Debug("connected\n"); /* cast to ATX_Socket interface */ result = ATX_CAST_OBJECT(client, &socket, ATX_Socket); if (result != ATX_SUCCESS) { ATX_Debug("ERROR: client object does not implement the " "ATX_Socket interface\n"); return result; } /* get socket stream */ result = ATX_Socket_GetStream(&socket, stream); if (result != ATX_SUCCESS) { ATX_Debug("ERROR: cannot get socket stream\n"); return result; } /* check stream */ if (ATX_OBJECT_IS_NULL(stream)) { ATX_Debug("ERROR: stream is NULL\n"); return ATX_FAILURE; } return ATX_SUCCESS; }