@@ -140,6 +140,61 @@ static bool detectWithGetprop(FFDisplayServerResult* ds)
140140 return false;
141141}
142142
143+ static bool detectDE (FFDisplayServerResult * ds )
144+ {
145+ if (ffSettingsGetAndroidProperty ("ro.vivo.os.build.display.id" , & ds -> dePrettyName )) // OriginOS 6
146+ {
147+ ffStrbufAppendC (& ds -> dePrettyName , ' ' );
148+ ffSettingsGetAndroidProperty ("ro.vivo.product.version" , & ds -> dePrettyName ); // PD2505D_xxx
149+ return true;
150+ }
151+ if (ffSettingsGetAndroidProperty ("ro.build.version.magic" , & ds -> dePrettyName ) ||
152+ ffSettingsGetAndroidProperty ("ro.build.version.emui" , & ds -> dePrettyName ))
153+ {
154+ ffStrbufReplaceAllC (& ds -> dePrettyName , '_' , ' ' );
155+ return true;
156+ }
157+ if (ffSettingsGetAndroidProperty ("ro.mi.os.version.name" , & ds -> dePrettyName ))
158+ {
159+ // MiUI like
160+ ffStrbufClear (& ds -> dePrettyName );
161+ ffSettingsGetAndroidProperty ("ro.build.version.incremental" , & ds -> dePrettyName ); // Detail version number
162+ if (ffStrbufStartsWithS (& ds -> dePrettyName , "OS" ))
163+ {
164+ ds -> dePrettyName .chars [0 ] = 'S' ;
165+ ds -> dePrettyName .chars [1 ] = ' ' ;
166+ ffStrbufPrependS (& ds -> dePrettyName , "HyperO" );
167+ }
168+ else if (ffStrbufStartsWithS (& ds -> dePrettyName , "V" ))
169+ {
170+ ds -> dePrettyName .chars [0 ] = ' ' ;
171+ ffStrbufPrependS (& ds -> dePrettyName , "MiUI" );
172+ }
173+ else
174+ ffStrbufSetStatic (& ds -> dePrettyName , "MiUI" );
175+ return true;
176+ }
177+ if (ffSettingsGetAndroidProperty ("ro.build.version.oplusrom" , & ds -> dePrettyName ))
178+ {
179+ if (ffStrbufStartsWithS (& ds -> dePrettyName , "V" ))
180+ ffStrbufSubstrAfter (& ds -> dePrettyName , 0 );
181+ ffStrbufPrependS (& ds -> dePrettyName , "ColorOS" );
182+ return true;
183+ }
184+ if (ffSettingsGetAndroidProperty ("ro.oxygen.version" , & ds -> dePrettyName ))
185+ {
186+ ffStrbufPrependS (& ds -> dePrettyName , "OxygenOS" );
187+ return true;
188+ }
189+ if (ffSettingsGetAndroidProperty ("ro.build.display.id" , & ds -> dePrettyName ) && ffStrbufStartsWithS (& ds -> dePrettyName , "RedMagicOS" ))
190+ {
191+ ffStrbufInsertNC (& ds -> dePrettyName , strlen ("RedMagicOS" ), 1 , ' ' );
192+ return true;
193+ }
194+
195+ return false;
196+ }
197+
143198void ffConnectDisplayServerImpl (FFDisplayServerResult * ds )
144199{
145200 const char * error = ffdsConnectXcbRandr (ds );
@@ -158,4 +213,6 @@ void ffConnectDisplayServerImpl(FFDisplayServerResult* ds)
158213
159214 if (!detectWithGetprop (ds ))
160215 detectWithDumpsys (ds );
216+
217+ detectDE (ds );
161218}
0 commit comments