| 538 | impl Iterator for Displays { |
| 539 | type Item = Display; |
| 540 | fn next(&mut self) -> Option<Display> { |
| 541 | if let Some(res) = self.read_and_invalidate() { |
| 542 | res |
| 543 | } else { |
| 544 | // We need to replace the adapter. |
| 545 | |
| 546 | self.ndisplay = 0; |
| 547 | self.nadapter += 1; |
| 548 | |
| 549 | self.adapter = unsafe { |
| 550 | let mut adapter = ptr::null_mut(); |
| 551 | (*self.factory.0).EnumAdapters1(self.nadapter, &mut adapter); |
| 552 | ComPtr(adapter) |
| 553 | }; |
| 554 | |
| 555 | if let Some(res) = self.read_and_invalidate() { |
| 556 | res |
| 557 | } else { |
| 558 | // All subsequent adapters will also be empty. |
| 559 | None |
| 560 | } |
| 561 | } |
| 562 | } |
| 563 | } |
| 564 | |
| 565 | pub struct Display { |