Alright... what have we learned here.
1) malloc your memory...
2) dereference your pointers when assigning values
Changes in red.
Code:
for(i = 0; i < display.num; i++) {
display.src[i] = malloc(sizeof(int));
*display.src[i] = -1;
}
Code:
if((!ret) && (dragging == 1) && (check(samp.x, samp.y) == 3)) {
if(src_selected > -1) {
*display.src[0] = src_selected;
activate_display(0, src_selected);
clean_loop();
return 0;
}
...
Code:
drag_label(video_bg, source.label[*display.src[mon_selected]], samp.x, samp.y, oldx, oldy);
All works as expected now. Thanks for dose of enlightenment.