Ejemplo n.º 1
0
static void pvr2_context_check(struct pvr2_context *mp)
{
    struct pvr2_channel *ch1, *ch2;
    pvr2_trace(PVR2_TRACE_CTXT,
           "pvr2_context %p (notify)", mp);
    if (!mp->initialized_flag && !mp->disconnect_flag) {
        mp->initialized_flag = !0;
        pvr2_trace(PVR2_TRACE_CTXT,
               "pvr2_context %p (initialize)", mp);
        /* Finish hardware initialization */
        if (pvr2_hdw_initialize(mp->hdw,
                    (void (*)(void *))pvr2_context_notify,
                    mp)) {
            mp->video_stream.stream =
                pvr2_hdw_get_video_stream(mp->hdw);
            /* Trigger interface initialization.  By doing this
               here initialization runs in our own safe and
               cozy thread context. */
            if (mp->setup_func) mp->setup_func(mp);
        } else {
            pvr2_trace(PVR2_TRACE_CTXT,
                   "pvr2_context %p (thread skipping setup)",
                   mp);
            /* Even though initialization did not succeed,
               we're still going to continue anyway.  We need
               to do this in order to await the expected
               disconnect (which we will detect in the normal
               course of operation). */
        }
    }

    for (ch1 = mp->mc_first; ch1; ch1 = ch2) {
        ch2 = ch1->mc_next;
        if (ch1->check_func) ch1->check_func(ch1);
    }

    if (mp->disconnect_flag && !mp->mc_first) {
        /* Go away... */
        pvr2_context_destroy(mp);
        return;
    }
}
static void pvr2_context_check(struct pvr2_context *mp)
{
	struct pvr2_channel *ch1, *ch2;
	pvr2_trace(PVR2_TRACE_CTXT,
		   "pvr2_context %p (notify)", mp);
	if (!mp->initialized_flag && !mp->disconnect_flag) {
		mp->initialized_flag = !0;
		pvr2_trace(PVR2_TRACE_CTXT,
			   "pvr2_context %p (initialize)", mp);
		/*                                */
		if (pvr2_hdw_initialize(mp->hdw,
					(void (*)(void *))pvr2_context_notify,
					mp)) {
			mp->video_stream.stream =
				pvr2_hdw_get_video_stream(mp->hdw);
			/*                                                 
                                                  
                           */
			if (mp->setup_func) mp->setup_func(mp);
		} else {
			pvr2_trace(PVR2_TRACE_CTXT,
				   "pvr2_context %p (thread skipping setup)",
				   mp);
			/*                                            
                                                    
                                               
                                                    
                            */
		}
	}

	for (ch1 = mp->mc_first; ch1; ch1 = ch2) {
		ch2 = ch1->mc_next;
		if (ch1->check_func) ch1->check_func(ch1);
	}

	if (mp->disconnect_flag && !mp->mc_first) {
		/*            */
		pvr2_context_destroy(mp);
		return;
	}
}