void laserdisc_device::device_stop() { // make sure all async operations have completed if (m_disc != NULL) osd_work_queue_wait(m_work_queue, osd_ticks_per_second() * 10); // free any textures and palettes if (m_videotex != NULL) machine().render().texture_free(m_videotex); if (m_videopalette != NULL) palette_deref(m_videopalette); if (m_overtex != NULL) machine().render().texture_free(m_overtex); }
void palette_client_free(palette_client *client) { palette_client **curptr; /* first locate and remove ourself from the palette's list */ for (curptr = &client->palette->client_list; *curptr != NULL; curptr = &(*curptr)->next) if (*curptr == client) { *curptr = client->next; break; } /* now deref the palette */ palette_deref(client->palette); /* free our data */ if (client->live.dirty != NULL) free(client->live.dirty); if (client->previous.dirty != NULL) free(client->previous.dirty); free(client); }