On 12-11-2019 21:20, Ron Tarrant wrote:

I'm back banging on this bit of code that puts together a doubly-linked list of Pixbufs for use as Window icons, etc. I assemble the list, check the integrity of the list and everything seems fine. Then I pass it to Window.setIconList() and get the errors shown below.

Does this function work as intended? Am I assembling the ListG wrong?

string[] images = ["images/airport_25.png",

ListG listG = new ListG(null);
for(int i; i < images.length; i++)
	string imageName = images[i];
	Pixbuf pixbuf = new Pixbuf(imageName);
	listG = listG.append(cast(void*)pixbuf);

// check list integrity
uint listLength = listG.length();
for(int i; i < listLength; i++)
	Pixbuf pixbuf = cast(Pixbuf)listG.nthData(i);
	writeln("data: ", listG.nthData(i), ", width: ", pixbuf.getWidth());


This is where binding break down a little and setIconList expects a
linked list of the C structs.

Try changing this line:

listG = listG.append(cast(void*)pixbuf);


listG = listG.append(cast(void*)pixbuf.getPixbufStruct());