void mdx_close(MDX_DATA *mdx,PDX_DATA *pdx) { /* one playing finished */ mdx_close_pdx( pdx ); mdx_close_mdx( mdx ); self_destroy(); }
void mdx_close(t_mdxmini *data) { /* one playing finished */ if (data->self) mdx_parse_mml_ym2151_async_finalize(data->songdata); mdx_close_pdx( data->pdx ); mdx_close_mdx( data->mdx ); self_destroy(data->songdata); }
void asl_field_assume ( asl_field_list_t * list, // Parent field list char * name, // Field name char * value // Field string value ) { asl_field_t *field; // field = asl_field_list_search (list, name); if (field) self_destroy (&field); asl_field_new_string (list, name, value); }
int atenderPedidoNivel(datos_planificador_t *datosPlan) { header_t header; int nbytes = recv(datosPlan->sockfdNivel, &header, sizeof(header), MSG_WAITALL); switch (header.type) { case NOTIFICAR_ALGORITMO_PLANIFICACION: actualizarAlgoritmo(&header, datosPlan); break; case VICTIMA_DEADLOCK: removerPersonaje(&header, datosPlan, "deadlock"); break; case VICTIMA_ENEMIGO: removerPersonaje(&header, datosPlan, "enemigo"); break; case UBICACION_CAJA: gestionarUbicacionCaja(datosPlan, &header); break; case NOTIFICACION_RECURSOS_LIBERADOS: gestionarDesbloqueoPersonajes(&header, datosPlan); break; default: log_warning(logFile, "Mensaje inesperado. type=%d length=%d. (atender pedido nivel).", header.type, header.length); } if (nbytes == 0) { log_error(logFile, "Nivel %s se desconecto inesperadamente.", datosPlan->nombre); self_destroy(datosPlan->nombre); } return nbytes; }
demo_client_connection_t * demo_client_connection_new_ ( char * file, // Source file for call size_t line, // Line number for call char * host, // Host to connect to char * virtual_host, // Virtual host icl_longstr_t * auth_data, // Authentication data char* instance, // Client instance name int trace, // Trace level, 0 - 3 int timeout // Connection timeout, msecs ) { char *env_value; // Get environment setting demo_client_connection_t * self = NULL; // Object reference if (!s_demo_client_connection_active) self_initialise (); self = demo_client_connection_alloc_ (file, line); if (self) { self->object_tag = DEMO_CLIENT_CONNECTION_ALIVE; #if defined (DEBUG) icl_mem_set_callback (self, demo_client_connection_show_); #endif // self->method_queue = smt_method_queue_sync_new (); self->timeout = timeout; self->trace = trace; self->error_text = "no error"; icl_shortstr_cpy (self->host, host); env_value = getenv ("WIREAPI_SILENT"); if (env_value && streq (env_value, "1")) self->silent = TRUE; self->thread = demo_client_agent_connection_thread_new ( self->method_queue, &self->alive, &self->interrupt, &self->reply_code, self->reply_text, host, virtual_host, auth_data, instance, trace, timeout); // Let the SMT engine take over until we get a reply on our queue if (self->thread) { if (s_wait_for_methods (self, self->timeout, TRUE) == 0) { self->alive = TRUE; // Connection is ready for use // Decide whether to use Direct Mode or not if (demo_client_config_direct (demo_client_config) || self->server_direct) self->direct = TRUE; } else self_destroy (&self); } } return (self); }
int mdx_load( char *filename, MDX_DATA **mdx, PDX_DATA **pdx, int slowDevice, int infloop ) { if (!self_construct()) { /* failed to create class instances */ return -1; } pdx_pathname = (char *)NULL; no_pdx = FLAG_FALSE; no_fm = FLAG_FALSE; no_opl3 = FLAG_TRUE; no_ym2151 = FLAG_FALSE; no_fm_voice = FLAG_FALSE; fm_waveform = 0; pcm_volume = 127; fm_volume = 127; volume = 127; is_output_to_stdout = FLAG_FALSE; max_infinite_loops = (infloop==1?10:1); fade_out_speed = 5; dump_voice = FLAG_FALSE; output_titles = FLAG_FALSE; is_use_reverb = (slowDevice?FLAG_FALSE:FLAG_TRUE); reverb_predelay = 0.05f; reverb_roomsize = 0.5f; reverb_damp = 0.1f; reverb_width = 0.8f; reverb_wet = 0.2f; reverb_dry = 0.5f; dsp_device = (char *)NULL; is_use_fragment = FLAG_TRUE; is_output_to_stdout_in_wav = FLAG_TRUE; /* load mdx file */ *mdx = mdx_open_mdx( filename ); if ( (*mdx) == NULL ) error_end(_("file not found")); (*mdx)->slowDevice = slowDevice; (*mdx)->is_use_pcm8 = no_pdx == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE; (*mdx)->is_use_fm = no_fm == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE; (*mdx)->is_use_opl3 = no_opl3 == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE; (*mdx)->is_use_ym2151 = no_ym2151 == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE; (*mdx)->is_use_fm_voice = no_fm_voice == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE; (*mdx)->fm_wave_form = fm_waveform; (*mdx)->master_volume = volume; (*mdx)->fm_volume = fm_volume * volume/127; (*mdx)->pcm_volume = pcm_volume * volume/127; (*mdx)->max_infinite_loops = max_infinite_loops; (*mdx)->fade_out_speed = fade_out_speed; (*mdx)->is_output_to_stdout = is_output_to_stdout; (*mdx)->is_use_fragment = is_use_fragment; (*mdx)->dsp_device = dsp_device; (*mdx)->dump_voice = dump_voice; (*mdx)->is_output_titles = output_titles; (*mdx)->is_use_reverb = is_use_reverb; (*mdx)->reverb_predelay = reverb_predelay; (*mdx)->reverb_roomsize = reverb_roomsize; (*mdx)->reverb_damp = reverb_damp; (*mdx)->reverb_width = reverb_width; (*mdx)->reverb_dry = reverb_dry; (*mdx)->reverb_wet = reverb_wet; (*mdx)->is_output_to_stdout_in_wav = is_output_to_stdout_in_wav; /* voice data load */ if ( mdx_get_voice_parameter( *mdx ) == 0 ) { /* load pdx data */ *pdx = _get_pdx(*mdx, filename); } else { self_destroy(); return -1; } return 0; }
byte * asl_field_parse ( asl_field_list_t * list, // Parent field list byte * input, // Field definition structure byte * limit // End of field-table string ) { asl_field_t *self; size_t string_size; byte * field_end; // Calculated end position // assert (list); self = self_new (); // Copy field name string_size = *input; input += 1; memcpy (self->name, input, string_size); self->name [string_size] = 0; input += string_size; assert (input <= limit); self->type = *input; input += 1; if (self->type == ASL_FIELD_TYPE_STRING) { ASL_FIELD_GET_LONG (string_size, input); // Ensure that the longstr->data is a valid C string self->string = icl_longstr_new (NULL, string_size + 1); memcpy (self->string->data, input, string_size); self->string->data [string_size] = '\0'; self->string->cur_size = string_size; input += string_size; field_end = input; } else if (self->type == ASL_FIELD_TYPE_INTEGER) { ASL_FIELD_GET_LONG (self->integer, input); field_end = input; } else if (self->type == ASL_FIELD_TYPE_DECIMAL) { self->decimals = *input; input += 1; ASL_FIELD_GET_LONG (self->integer, input); field_end = input; } else if (self->type == ASL_FIELD_TYPE_TIME) { ASL_FIELD_GET_LONG (self->integer, input); field_end = input; } else if (self->type == ASL_FIELD_TYPE_FIELD_TABLE) { ASL_FIELD_GET_LONG (string_size, input); // Ensure that the longstr->data is a valid C string self->string = icl_longstr_new (NULL, string_size); memcpy (self->string->data, input, string_size); self->string->cur_size = string_size; input += string_size; field_end = input; } else if (self->type == ASL_FIELD_TYPE_VOID) { field_end = input; } else { icl_console_print ("asl_field: invalid field type - '%c'", *input); field_end = NULL; } if (field_end == NULL || input > limit) { icl_console_print ("asl_field: field definition badly formed - rejected"); field_end = NULL; self_destroy (&self); } else asl_field_list_queue (list, self); asl_field_unlink (&self); return (field_end); }