- draw_part(part1, 0, &mydata);
- draw_part(part2, 1, &mydata);
- draw_part(part3, 2, &mydata);
- draw_part(part4, 3, &mydata);
- draw_part(part5, 4, &mydata);
- draw_part(part6, 0, &mydata);
+ /*
+ * Make a copy of caller's data. We're cheating for the cases after
+ * the first loop since we still have a pointer into the main thread
+ * to the data which it uses for setting up this thread (but it has
+ * been modified to use different coordinates).
+ */
+ mydata = *(DATA *) arg;
+
+ draw_part(part1, 0, &mydata);
+ draw_part(part2, 1, &mydata);
+ draw_part(part3, 2, &mydata);
+ draw_part(part4, 3, &mydata);
+ draw_part(part5, 4, &mydata);
+ draw_part(part6, 0, &mydata);
+ } while (get_next_drop());