Пример #1
0
static void grab_start(t_grab *x)
{
    x->x_tograbbed = 0;
    x->x_bindelem = 0;
    if (x->x_target)
    {
	t_pd *proxy = x->x_target->s_thing;
	t_object *ob;
	if (proxy && bindlist_class)
	{
	    if (*proxy == bindlist_class)
	    {
		x->x_bindelem = ((t_bindlist *)proxy)->b_list;
		while (x->x_bindelem)
		{
		    if (ob = pd_checkobject(x->x_bindelem->e_who))
		    {
			x->x_tograbbed =
			    fragile_outlet_connections(ob->ob_outlet);
			return;
		    }
		    x->x_bindelem = x->x_bindelem->e_next;
		}
	    }
	    else if (ob = pd_checkobject(proxy))
		x->x_tograbbed = fragile_outlet_connections(ob->ob_outlet);
	}
    }
    else x->x_tograbbed = fragile_outlet_connections(x->x_rightout);
}
Пример #2
0
static void poltocar_dsp(t_poltocar *x, t_signal **sp)
{
    if (fragile_outlet_connections(x->x_out2))
	dsp_add(poltocar_perform, 5, sp[0]->s_n, sp[0]->s_vec,
		sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec);
    else
	dsp_add(poltocar_perform_noimag, 4, sp[0]->s_n, sp[0]->s_vec,
		sp[1]->s_vec, sp[2]->s_vec);
}
Пример #3
0
static void cartopol_dsp(t_cartopol *x, t_signal **sp)
{
    if (fragile_outlet_connections(x->x_out2))
	dsp_add(cartopol_perform, 5, sp[0]->s_n, sp[0]->s_vec,
		sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec);
    else
	dsp_add(cartopol_perform_nophase, 4, sp[0]->s_n, sp[0]->s_vec,
		sp[1]->s_vec, sp[2]->s_vec);
}
Пример #4
0
static t_pd *grab_next(t_grab *x)
{
nextremote:
    if (x->x_tograbbed)
    {
	int inno;
	x->x_tograbbed =
	    fragile_outlet_nextconnection(x->x_tograbbed, &x->x_grabbed, &inno);
	if (x->x_grabbed)
	{
	    if (inno)
	    {
		if (x->x_target)
		    loud_error((t_pd *)x,
			       "right outlet must feed leftmost inlet");
		else
		    loud_error((t_pd *)x,
			       "remote proxy must feed leftmost inlet");
	    }
	    else
	    {
		t_outlet *op;
		t_outlet *goutp;
		int goutno = x->x_noutlets;
		x->x_ngrabout = obj_noutlets(x->x_grabbed);
		if (goutno > x->x_ngrabout) goutno = x->x_ngrabout;
		while (goutno--)
		{
		    x->x_grabcons[goutno] =
			obj_starttraverseoutlet(x->x_grabbed, &goutp, goutno);
		    goutp->o_connections =
			obj_starttraverseoutlet((t_object *)x, &op, goutno);
		}
		return ((t_pd *)x->x_grabbed);
	    }
	}
    }
    if (x->x_bindelem) while (x->x_bindelem = x->x_bindelem->e_next)
    {
	t_object *ob;
	if (ob = pd_checkobject(x->x_bindelem->e_who))
	{
	    x->x_tograbbed = fragile_outlet_connections(ob->ob_outlet);
	    goto nextremote;
	}
    }
    return (0);
}