MCPcopy Create free account
hub / github.com/danoon2/Boxedwine / init_pixel_formats

Function init_pixel_formats

platform/mac/pixelformat.cpp:787–854  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

785
786
787static bool init_pixel_formats(void)
788{
789 bool ret = false;
790 CGLRendererInfoObj renderer_info;
791 GLint rendererCount;
792 CGLError err;
793 CFMutableSetRef pixel_format_set;
794 CFMutableArrayRef pixel_format_array;
795 int i;
796 CFRange range;
797
798 err = CGLQueryRendererInfo(CGDisplayIDToOpenGLDisplayMask(CGMainDisplayID()), &renderer_info, &rendererCount);
799 if (err) {
800 kwarn_fmt("CGLQueryRendererInfo failed (%d) %s", err, CGLErrorString(err));
801 return false;
802 }
803
804 pixel_format_set = CFSetCreateMutable(NULL, 0, &kCFTypeSetCallBacks);
805 if (!pixel_format_set) {
806 kwarn("CFSetCreateMutable failed");
807 CGLDestroyRendererInfo(renderer_info);
808 return false;
809 }
810
811 pixel_format_array = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
812 if (!pixel_format_array) {
813 kwarn("CFArrayCreateMutable failed");
814 CFRelease(pixel_format_set);
815 CGLDestroyRendererInfo(renderer_info);
816 return false;
817 }
818
819 for (i = 0; i < rendererCount; i++) {
820 renderer_properties renderer;
821
822 get_renderer_properties(renderer_info, i, &renderer);
823 enum_renderer_pixel_formats(renderer, pixel_format_array, pixel_format_set);
824 }
825
826 CFRelease(pixel_format_set);
827 CGLDestroyRendererInfo(renderer_info);
828
829 range = CFRangeMake(0, CFArrayGetCount(pixel_format_array));
830 if (range.length) {
831 pixel_formats = new pixel_format[range.length];
832 if (pixel_formats) {
833 CFArraySortValues(pixel_format_array, range, pixel_format_comparator, NULL);
834 for (i = 0; i < range.length; i++) {
835 CFNumberRef number = (CFNumberRef)CFArrayGetValueAtIndex(pixel_format_array, i);
836 UInt64 code;
837
838 CFNumberGetValue(number, kCFNumberLongLongType, &code);
839 pixel_formats[i] = pixel_format_for_code(code);
840 if (pixel_formats[i].window)
841 nb_displayable_formats++;
842 }
843
844 nb_formats = (int)range.length;

Callers 1

getPixelFormatsFunction · 0.85

Calls 7

kwarn_fmtFunction · 0.85
kwarnFunction · 0.85
CFReleaseFunction · 0.85
get_renderer_propertiesFunction · 0.85
CFRangeMakeFunction · 0.85
pixel_format_for_codeFunction · 0.85

Tested by

no test coverage detected