diff --git a/dist/languages/da_DK.ts b/dist/languages/da_DK.ts index bcc7edec3..861b59046 100644 --- a/dist/languages/da_DK.ts +++ b/dist/languages/da_DK.ts @@ -3583,142 +3583,6 @@ Drag points to change position, or double-click table cells to edit values.Engelsk - - ConfigureWeb - - - Form - Form - - - - Citra Web Service - Citras webservice - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - Ved at give dit brugernavn og token, accepterer du at Citra indsamler yderligere brugsdata, som måske kan indeholde brugeridentificerende information. - - - - - Verify - Bekræft - - - - Sign up - Opret konto - - - - Token: - Token: - - - - Username: - Brugernavn: - - - - What is my token? - Hvad er min token? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - Konfiguration af webservicen kan kun ændres mens du ikke er vært af et offentligt rum. - - - - Telemetry - Telemetri - - - - Share anonymous usage data with the Citra team - Del anonym brugsdata med udviklerne af Citra - - - - Learn more - Lær mere - - - - Telemetry ID: - Telemetri-id: - - - - Regenerate - Generer nyt - - - - Discord Presence - Discord-presence - - - - Show Current Game in your Discord Status - Vis kørende spil som din Discord-status - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Lær mere</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Opret bruger</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">Hvad er min token?</span></a> - - - - - Unspecified - - - - - - Telemetry ID: 0x%1 - Telemetri-id: 0x%1 - - - - Token not verified - - - - - Token was not verified. The change to your token has not been saved. - - - - - Verifying... - Godkender... - - - - Verification failed - Bekræftelse mislykkedes - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - - - DirectConnect @@ -6997,4 +6861,4 @@ They may have left the room. Afventningstræ - \ No newline at end of file + diff --git a/dist/languages/de.ts b/dist/languages/de.ts index 77bb88e3a..64f526171 100644 --- a/dist/languages/de.ts +++ b/dist/languages/de.ts @@ -3585,142 +3585,6 @@ Ziehe Punkte, um ihre Position zu verändern, oder doppelklicke auf Zellen in de Englisch - - ConfigureWeb - - - Form - Form - - - - Citra Web Service - Citra Web Service - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - Mit dem Bereitstellen Ihres Nutzernamens und Tokens, erlauben Sie Citra, zusätzliche Nutzungsdaten zu sammeln. Die Nutzungsdaten können auch Daten zur Nutzeridentifikation beinhalten. - - - - - Verify - Verifizieren - - - - Sign up - Registrieren - - - - Token: - Token: - - - - Username: - Nutzername: - - - - What is my token? - Was ist mein Token? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - Die Web-Service-Konfiguration kann nur geändert werden, wenn kein öffentlicher Raum gehostet wird. - - - - Telemetry - Telemetrie - - - - Share anonymous usage data with the Citra team - Anonyme Nutzungsdaten an das Citra-Team senden - - - - Learn more - Mehr erfahren - - - - Telemetry ID: - Telemetrie-ID: - - - - Regenerate - Regenerieren - - - - Discord Presence - Discord Presence - - - - Show Current Game in your Discord Status - Aktuelles Spiel in Ihrem Discordstatus anzeigen - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Mehr erfahren</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Anmelden</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">Was ist mein Token?</span></a> - - - - - Unspecified - Nicht spezifiziert - - - - - Telemetry ID: 0x%1 - Telemetrie-ID: 0x%1 - - - - Token not verified - Token nicht verifiziert - - - - Token was not verified. The change to your token has not been saved. - Der Token wurde nicht verifiziert. Die Änderung zu dem Token wurde nicht gespeichert. - - - - Verifying... - Verifizieren... - - - - Verification failed - Verifizierung fehlgeschlagen - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Verifizierung fehlgeschlagen. Stellen Sie sicher, dass Sie sowohl Ihren Token korrekt eingegeben haben und dass Sie mit dem Internet verbunden sind. - - DirectConnect @@ -7004,4 +6868,4 @@ They may have left the room. Wait Tree - \ No newline at end of file + diff --git a/dist/languages/el.ts b/dist/languages/el.ts index 524ab83e8..2731abe21 100644 --- a/dist/languages/el.ts +++ b/dist/languages/el.ts @@ -3584,142 +3584,6 @@ Drag points to change position, or double-click table cells to edit values.Αγγλικά - - ConfigureWeb - - - Form - Φόρμα - - - - Citra Web Service - Citra Web Service - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - Παρέχοντας το όνομα χρήστη και το αναγνωριστικό σας, επιτρέπετε στο Citra να συλλέξει περισσότερα δεδομένα χρήσης, που ενδέχεται να περιέχουν αναγνωριστικές πληροφορίες χρήστη. - - - - - Verify - Επαλήθευση - - - - Sign up - Εγγραφή - - - - Token: - Αναγνωριστικό: - - - - Username: - Όνομα χρήστη: - - - - What is my token? - Ποιο είναι το αναγνωριστικό μου; - - - - Web Service configuration can only be changed when a public room isn't being hosted. - Η ρύθμιση της διαδικτυακής υπηρεσίας μπορεί να αλλάξει μόνο όταν δεν είναι σε λειτουργία κάποιο δημόσιο δωμάτιο. - - - - Telemetry - Τηλεμετρία - - - - Share anonymous usage data with the Citra team - Κοινοποίηση ανώνυμων δεδομένων χρήσης στην ομάδα του Citra - - - - Learn more - Μάθετε περισσότερα - - - - Telemetry ID: - ID τηλεμετρίας: - - - - Regenerate - Επαναδημιουργία - - - - Discord Presence - Παρουσία Discord - - - - Show Current Game in your Discord Status - Εμφάνιση τρέχοντος παιχνιδιού στην κατάσταση Discord σας - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Μάθετε περισσότερα</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Εγγραφή</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">Ποιο είναι το αναγνωριστικό μου;</span></a> - - - - - Unspecified - Δεν έχει καθοριστεί - - - - - Telemetry ID: 0x%1 - ID τηλεμετρίας: 0x%1 - - - - Token not verified - Μη επαληθευμένο αναγνωριστικό - - - - Token was not verified. The change to your token has not been saved. - Το αναγνωριστικό δεν επαληθεύτηκε. Η αλλαγή στο αναγνωριστικό σας δεν έχει αποθηκευτεί. - - - - Verifying... - Επαλήθευση... - - - - Verification failed - Αποτυχία επαλήθευσης - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Αποτυχία επαλήθευσης. Βεβαιωθείτε ότι έχετε εισαγάγει σωστά το αναγνωστικό σας και ότι λειτουργεί η σύνδεσή σας στο διαδίκτυο. - - DirectConnect @@ -7001,4 +6865,4 @@ They may have left the room. Δένδρο αναμονής - \ No newline at end of file + diff --git a/dist/languages/es_ES.ts b/dist/languages/es_ES.ts index e544ba4ed..ce5e326d4 100644 --- a/dist/languages/es_ES.ts +++ b/dist/languages/es_ES.ts @@ -3585,142 +3585,6 @@ Mueve los puntos para cambiar la posición, o haz doble click en las celdas de l Inglés (English) - - ConfigureWeb - - - Form - Formulario - - - - Citra Web Service - Servicio Web de Citra - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - Al dar tu nombre de usuario y tu token, das tu consentimiento a que Citra recopile datos de uso adicionales, que pueden incluir información que identifique al usuario. - - - - - Verify - Verificar - - - - Sign up - Registrarse - - - - Token: - Token: - - - - Username: - Nombre de usuario: - - - - What is my token? - ¿Cuál es mi token? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - La configuración del Servicio Web sólo puede ser cambiada cuando una sala pública no está siendo alojada. - - - - Telemetry - Telemetría - - - - Share anonymous usage data with the Citra team - Compartir datos de uso anónimos con el equipo de Citra - - - - Learn more - Más Información - - - - Telemetry ID: - ID de Telemetría: - - - - Regenerate - Regenerar - - - - Discord Presence - Presencia en Discord - - - - Show Current Game in your Discord Status - Mostrar Juego Actual en el Estado de Discord - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Más información</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Regístrate</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">¿Cuál es mi token?</span></a> - - - - - Unspecified - Sin especificar - - - - - Telemetry ID: 0x%1 - ID de Telemetría: 0x%1 - - - - Token not verified - Token no verificado - - - - Token was not verified. The change to your token has not been saved. - El token no ha sido verificado. El cambio a tu token no se ha guardado. - - - - Verifying... - Verificando... - - - - Verification failed - La verificación falló - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - La verificación ha fallado. Comprueba que has introducido tu token correctamente y que tu conexión a Internet funcione correctamente. - - DirectConnect @@ -7014,4 +6878,4 @@ Puede que haya dejado la sala. Árbol de Espera - \ No newline at end of file + diff --git a/dist/languages/fi.ts b/dist/languages/fi.ts index 492b539ab..b01398ff4 100644 --- a/dist/languages/fi.ts +++ b/dist/languages/fi.ts @@ -3583,142 +3583,6 @@ Drag points to change position, or double-click table cells to edit values.Englanti - - ConfigureWeb - - - Form - Muot - - - - Citra Web Service - Citran Nettipalvelu - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - - - - - - Verify - Todenna - - - - Sign up - Rekisteröidy - - - - Token: - Avain: - - - - Username: - Käyttäjänimi - - - - What is my token? - Mikä on avaimeni? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - - - - - Telemetry - Telemetria - - - - Share anonymous usage data with the Citra team - Jaa anonyymejä käyttötietoja Citran tekiöiden kanssa - - - - Learn more - Opi lisää - - - - Telemetry ID: - Telemetria tunnus: - - - - Regenerate - Uudista - - - - Discord Presence - Discord läsnäolo - - - - Show Current Game in your Discord Status - Näytä nykyinen peli Discord tilassa - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Lue lisää</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Kirjaudu</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">Mikä on avaimeni?</span></a> - - - - - Unspecified - - - - - - Telemetry ID: 0x%1 - Telemetria tunnus: 0x%1 - - - - Token not verified - - - - - Token was not verified. The change to your token has not been saved. - - - - - Verifying... - Varmennetaan... - - - - Verification failed - Varmennus epäonnistui - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - - - DirectConnect @@ -6981,4 +6845,4 @@ They may have left the room. - \ No newline at end of file + diff --git a/dist/languages/fr.ts b/dist/languages/fr.ts index 71c944f56..656611455 100644 --- a/dist/languages/fr.ts +++ b/dist/languages/fr.ts @@ -3585,142 +3585,6 @@ Glissez les points pour modifier la position, ou double-cliquez les cellules pou Anglais - - ConfigureWeb - - - Form - Forme - - - - Citra Web Service - Service web de Citra - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - En fournissant votre nom d'utilisateur et votre jeton, vous acceptez d'autoriser Citra à collecter des données d'utilisation supplémentaires, qui peuvent inclure des informations d'identification de l'utilisateur. - - - - - Verify - Vérifier - - - - Sign up - S'inscrire - - - - Token: - Jeton : - - - - Username: - Nom d'utilisateur - - - - What is my token? - Quel est mon jeton ? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - La configuration du service Web ne peut être modifiée que si un salon publique n'est pas en cours d'hébergement. - - - - Telemetry - Télémétrie - - - - Share anonymous usage data with the Citra team - Partage des données d'utilisation anonymes avec l'équipe Citra - - - - Learn more - En savoir plus - - - - Telemetry ID: - ID de télémétrie : - - - - Regenerate - Régénérer - - - - Discord Presence - Présence sur Discord - - - - Show Current Game in your Discord Status - Afficher votre jeu en cours dans votre statut Discord - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">En savoir plus</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">S'inscrire</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">Quel est mon jeton ?</span></a> - - - - - Unspecified - Non spécifié - - - - - Telemetry ID: 0x%1 - ID de télémétrie: 0x%1 - - - - Token not verified - Jeton non vérifié - - - - Token was not verified. The change to your token has not been saved. - Jeton non vérifié. La modification de votre jeton n'a pas été sauvegardée. - - - - Verifying... - Vérification en cours... - - - - Verification failed - Échec de la vérification - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Échec de la vérification. Vérifiez que le jeton a été écris correctement et que votre connexion internet fonctionne. - - DirectConnect @@ -7009,4 +6873,4 @@ Il a peut-être quitté la salon. Arbre d'instructions - \ No newline at end of file + diff --git a/dist/languages/hu_HU.ts b/dist/languages/hu_HU.ts index 8d2a641eb..6abf3b4df 100644 --- a/dist/languages/hu_HU.ts +++ b/dist/languages/hu_HU.ts @@ -3582,190 +3582,6 @@ Drag points to change position, or double-click table cells to edit values.Angol - - ConfigureWeb - - - Form - Forma - - - - Citra Web Service - Citra Web-szolgáltatás - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - A felhasználóneved és tokened megadásával, belegyezel abba, hogy a Citra használati adatokat gyűjtsön, ami felhasználó azonosító információt tartalmazhat. - - - - - Verify - Ellenőrzés - - - - Sign up - Regisztráció - - - - Token: - Token: - - - - Username: - Felhasználónév: - - - - What is my token? - Mi a tokenem? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - - - - - Telemetry - Telemetria - - - - Share anonymous usage data with the Citra team - Névtelen használati adat megosztása a Citra csapatával - - - - Learn more - Tudj meg többet - - - - Telemetry ID: - Telemetria ID: - - - - Regenerate - Regeneráció - - - - Discord Presence - Discord jelenlét - - - - Show Current Game in your Discord Status - Jelenlegi játék megjelenítése a Discord állapotodban - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Tudj meg többet</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Regisztráció</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">Mi a tokenem?</span></a> - - - - - Unspecified - Nem meghatározott - - - - - Telemetry ID: 0x%1 - Telemetria ID: 0x%1 - - - - Token not verified - Token nincs megerősítve - - - - Token was not verified. The change to your token has not been saved. - Token nincs megerősítve. A változtatások nem lettek elmentve. - - - - Verifying... - Megerősítés... - - - - Verification failed - Ellenőrzés sikertelen - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Sikertelen megerősítés. Győződj meg róla, hogy helyesen írtad be a tokened, és van internetkapcsolatod. - - - - DirectConnect - - - Direct Connect - Közvetlen Kapcsolódás - - - - Server Address - - - - - <html><head/><body><p>Server address of the host</p></body></html> - - - - - Port - Port - - - - <html><head/><body><p>Port number the host is listening on</p></body></html> - <html><head/><body><p>Annak a portnak a száma, amire a gazda figyel</p></body></html> - - - - 24872 - 24872 - - - - Nickname - Becenév - - - - Password - Jelszó - - - - Connect - Kapcsolás - - DirectConnectWindow @@ -6991,4 +6807,4 @@ They may have left the room. Várakozási Fa - \ No newline at end of file + diff --git a/dist/languages/id.ts b/dist/languages/id.ts index d0ff400a9..4bb737e4f 100644 --- a/dist/languages/id.ts +++ b/dist/languages/id.ts @@ -3584,143 +3584,6 @@ Drag points to change position, or double-click table cells to edit values.Inggris - - ConfigureWeb - - - Form - Formulir - - - - Citra Web Service - Layanan Web Citra - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - Dengan memberikan nama user dan token, Anda menyetujui Citra untuk mengumpulkan data penggunaan tambahan, mungkin termaksud informasi identifikasi pengguna. - - - - - Verify - Verifikasi - - - - Sign up - Daftar - - - - Token: - Token: - - - - Username: - Nama User: - - - - What is my token? - Apa token Saya? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - Konfigurasi Servis Web hanya bisa di ubah ketika ruangan publik sedang tidak digunakan - - - - Telemetry - Telemetri - - - - Share anonymous usage data with the Citra team - Bagikan data penggunaan anonim dengan tim Citra - - - - Learn more - Pelajari lebih Banyak - - - - Telemetry ID: - ID Telemetri: - - - - Regenerate - Memperbarui - - - - Discord Presence - Status Discord - - - - Show Current Game in your Discord Status - Tampilkan Game Saat Ini ke Status Discord Anda - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Pelajari lebih banyak</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Daftar</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">Apa token saya ?</span></a> - - - - - Unspecified - Tidak di spesifikasi - - - - - Telemetry ID: 0x%1 - ID Telemetri: 0x%1 - - - - Token not verified - Token tidak ter-verifikasi - - - - Token was not verified. The change to your token has not been saved. - Token tidak di verifikasi. -Perubahan pada token anda belum tersimpan. - - - - Verifying... - Mem-verifikasi... - - - - Verification failed - Verifikasi gagal - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Verifikasi gagal. Pastikan nama user dan token yang Anda masukkan benar dan koneksi internet Anda menyala. - - DirectConnect @@ -6998,4 +6861,4 @@ They may have left the room. Tunggu Tree - \ No newline at end of file + diff --git a/dist/languages/it.ts b/dist/languages/it.ts index 2d7b83171..d4bd4ccb8 100644 --- a/dist/languages/it.ts +++ b/dist/languages/it.ts @@ -3585,142 +3585,6 @@ Trascina i punti per cambiarne la posizione, o fai doppio clic sulla tabella per Inglese - - ConfigureWeb - - - Form - Modulo - - - - Citra Web Service - Servizio web di Citra - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - Fornendo i tuoi nome utente e token, permetti a Citra di raccogliere dati di utilizzo aggiuntivi, che potrebbero contenere informazioni identificative dell'utente. - - - - - Verify - Verifica - - - - Sign up - Registrati - - - - Token: - Token: - - - - Username: - Nome utente - - - - What is my token? - Qual è il mio token? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - La configurazione del servizio web può essere cambiata solo quando non si sta ospitando una stanza pubblica. - - - - Telemetry - Telemetria - - - - Share anonymous usage data with the Citra team - Condividi dati anonimi sull'utilizzo con il team di Citra - - - - Learn more - Per saperne di più - - - - Telemetry ID: - ID telemetria: - - - - Regenerate - Rigenera - - - - Discord Presence - Discord Presence - - - - Show Current Game in your Discord Status - Mostra il gioco attuale nel tuo stato di Discord - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Per saperne di più</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Registrati</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">Qual è il mio token?</span></a> - - - - - Unspecified - Non specificato - - - - - Telemetry ID: 0x%1 - ID telemetria: 0x%1 - - - - Token not verified - Token non verificato - - - - Token was not verified. The change to your token has not been saved. - Il token non è stato verificato. La modifica al token non è stata salvata. - - - - Verifying... - Verifica... - - - - Verification failed - Verifica fallita - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Verifica fallita. Controlla di aver inserito il token correttamente, e che la tua connessione a internet sia funzionante. - - DirectConnect @@ -7010,4 +6874,4 @@ Potrebbe aver lasciato la stanza. Wait Tree - \ No newline at end of file + diff --git a/dist/languages/ja_JP.ts b/dist/languages/ja_JP.ts index 39a74eca8..95ec541b4 100644 --- a/dist/languages/ja_JP.ts +++ b/dist/languages/ja_JP.ts @@ -3587,142 +3587,6 @@ Drag points to change position, or double-click table cells to edit values.英語 - - ConfigureWeb - - - Form - フォーム - - - - Citra Web Service - Citra Webサービス - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - ユーザー名とトークンを提供することにより、Citraへの追加の情報データの収集(ユーザー識別情報含む)へ同意したものとします。 - - - - - Verify - 確認 - - - - Sign up - ユーザー登録 - - - - Token: - トークン - - - - Username: - ユーザー名 - - - - What is my token? - トークンの取得 - - - - Web Service configuration can only be changed when a public room isn't being hosted. - Web設定はPublicなルームをホスティング中は変更できません - - - - Telemetry - テレメトリーの設定 - - - - Share anonymous usage data with the Citra team - Citraチームに匿名で使用データを共有する - - - - Learn more - もっと詳しく - - - - Telemetry ID: - テレメトリーID - - - - Regenerate - 再作成 - - - - Discord Presence - Discord Presence - - - - Show Current Game in your Discord Status - プレイ中のゲームをDiscordに表示 - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">もっと詳しく</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">サインアップ</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">トークンの取得</span></a> - - - - - Unspecified - 未指定 - - - - - Telemetry ID: 0x%1 - テレメトリーID: 0x%1 - - - - Token not verified - トークン未検証 - - - - Token was not verified. The change to your token has not been saved. - トークンが未検証です。トークンの変更は保存されていません。 - - - - Verifying... - 検証中… - - - - Verification failed - 検証失敗 - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - 検証に失敗しました。トークンが正しく入力されているか、ネット接続が正常に機能しているか確認してください。 - - DirectConnect @@ -7002,4 +6866,4 @@ They may have left the room. Wait Tree - \ No newline at end of file + diff --git a/dist/languages/ko_KR.ts b/dist/languages/ko_KR.ts index 61badf94d..fba684f70 100644 --- a/dist/languages/ko_KR.ts +++ b/dist/languages/ko_KR.ts @@ -3585,142 +3585,6 @@ Drag points to change position, or double-click table cells to edit values.English - - ConfigureWeb - - - Form - 종류 - - - - Citra Web Service - Citra 웹 서비스 - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - 사용자 이름과 토큰을 제공하므로써 Citra가 사용자 식별 정보를 포함한 추가 사용 데이터를 수집하도록 허용하는 데 동의하게 됩니다. - - - - - Verify - 인증 - - - - Sign up - 가입 - - - - Token: - 토큰: - - - - Username: - 사용자 이름: - - - - What is my token? - 나의 토큰이 무엇인가요? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - 공개 방이 호스팅되지 않을 때만 웹 서비스 설정을 변경할 수 있습니다. - - - - Telemetry - 텔레메트리 - - - - Share anonymous usage data with the Citra team - Citra팀과 익명 사용 데이터 공유하겠습니다 - - - - Learn more - 자세히 알아보기 - - - - Telemetry ID: - 텔레메트리 ID: - - - - Regenerate - 재생성 - - - - Discord Presence - 디스코드 있음 - - - - Show Current Game in your Discord Status - 사용자의 디스코드 상태에 현재 게임 표시하기 - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">자세히 알아보기</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">가입</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">나의 토큰이 무엇인가요?</span></a> - - - - - Unspecified - 불특정 - - - - - Telemetry ID: 0x%1 - 텔레메트리 ID: 0x%1 - - - - Token not verified - 토큰이 확인되지 않음 - - - - Token was not verified. The change to your token has not been saved. - 토큰이 확인되지 않았습니다. 토큰 변경 사항이 저장되지 않을 것입니다. - - - - Verifying... - 인증중... - - - - Verification failed - 인증 실패 - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - 인증에 실패했습니다. 토큰을 올바르게 입력했으며 인터넷 연결이 작동하는지 확인하십시오. - - DirectConnect @@ -7004,4 +6868,4 @@ They may have left the room. Wait Tree - \ No newline at end of file + diff --git a/dist/languages/lt_LT.ts b/dist/languages/lt_LT.ts index 22e6a7db4..176e6cc01 100644 --- a/dist/languages/lt_LT.ts +++ b/dist/languages/lt_LT.ts @@ -3581,142 +3581,6 @@ Drag points to change position, or double-click table cells to edit values.Anglų k. - - ConfigureWeb - - - Form - Forma - - - - Citra Web Service - „Citra“ interneto tarnyba - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - Įrašydami jūsų vartotojo vardą ir simbolinį ID, jūs sutinkate, kad „Citra“ rinktų papildomus naudojimo duomenis, tarp kurių gali būti informacija, skirta atpažinti vartotoją. - - - - - Verify - Patikrinti - - - - Sign up - Užsiregistruoti - - - - Token: - Simbolinis ID: - - - - Username: - Vartotojo vardas: - - - - What is my token? - Koks yra mano simbolinis ID? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - - - - - Telemetry - Telemetrija - - - - Share anonymous usage data with the Citra team - Pasidalinti anonimiškais naudojimo duomenimis su „Citra“ komanda - - - - Learn more - Sužinoti daugiau - - - - Telemetry ID: - Telemetrijos ID: - - - - Regenerate - Regeneruoti - - - - Discord Presence - Discord nustatymai - - - - Show Current Game in your Discord Status - Rodyti jūsų žaidžiamą žaidimą Discord'e - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Sužinoti daugiau</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Užsiregistruoti</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">Koks yra mano simbolinis ID?</span></a> - - - - - Unspecified - - - - - - Telemetry ID: 0x%1 - Telemetrijos ID: 0x%1 - - - - Token not verified - - - - - Token was not verified. The change to your token has not been saved. - - - - - Verifying... - Tikrinama... - - - - Verification failed - Tikrinimas nepavyko - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - - - DirectConnect @@ -6989,4 +6853,4 @@ They may have left the room. Laukimo gijų medis - \ No newline at end of file + diff --git a/dist/languages/nb.ts b/dist/languages/nb.ts index 1ea903eb2..a3c44b557 100644 --- a/dist/languages/nb.ts +++ b/dist/languages/nb.ts @@ -3584,142 +3584,6 @@ Dra punkter for å endre posisjon, eller dobbeltklikk på tabellceller for å re Engelsk - - ConfigureWeb - - - Form - Form - - - - Citra Web Service - Citra Web Tjenester - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - Ved å gi brukernavn og nøkkel, samtykker du i å tillate Citra å samle inn brukerdata, som kan inneholde bruker indentifiserende informasjon. - - - - - Verify - Verifisere - - - - Sign up - Registrer deg - - - - Token: - Nøkkel: - - - - Username: - Brukernavn: - - - - What is my token? - Hva er min nøkkel? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - Web Service-konfigurasjon kan bare endres når et offentlig rom ikke blir hostet. - - - - Telemetry - Telemetri - - - - Share anonymous usage data with the Citra team - Del anonyme brukerdata med Citra-teamet - - - - Learn more - Lær mer - - - - Telemetry ID: - Telemetri ID: - - - - Regenerate - Regenerere - - - - Discord Presence - Discord tilstedeværelse - - - - Show Current Game in your Discord Status - Vis Gjeldende Spill i Discord Statusen din. - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Lær mer</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Registrer deg</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">Hva er min nøkkel?</span></a> - - - - - Unspecified - Uspesifisert - - - - - Telemetry ID: 0x%1 - Telemetri ID: 0x%1 - - - - Token not verified - Nøkkel ikke bekreftet - - - - Token was not verified. The change to your token has not been saved. - Nøkkel ble ikke bekreftet. Endringen til nøkelen ditt er ikke lagret. - - - - Verifying... - Verifiserer... - - - - Verification failed - Verifikasjon misslyktes - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Bekreftelsen mislyktes. Sjekk at du har lagt inn nøkkelen riktig, og at internettforbindelsen din fungerer. - - DirectConnect @@ -7001,4 +6865,4 @@ They may have left the room. Wait Tree - \ No newline at end of file + diff --git a/dist/languages/nl.ts b/dist/languages/nl.ts index e01b59c2b..a5b218d06 100644 --- a/dist/languages/nl.ts +++ b/dist/languages/nl.ts @@ -3585,142 +3585,6 @@ Sleep punten om de positie te wijzigen of dubbelklik op tabelcellen om waarden t Engels - - ConfigureWeb - - - Form - Formulier - - - - Citra Web Service - Citra-webdienst - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - Door het voorzien van je gebruikersnaam en token, ga je akkoord dat Citra aanvullende gebruiksdata verzameld, waaronder informatie waarmee de gebruiker zou kunnen worden geïdentificeerd. - - - - - Verify - Verifiëren - - - - Sign up - Registreren - - - - Token: - Token: - - - - Username: - Gebruikersnaam: - - - - What is my token? - Wat is mijn token? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - De webserviceconfiguratie kan alleen worden gewijzigd als er geen publieke ruimte wordt gehost. - - - - Telemetry - Telemetrie - - - - Share anonymous usage data with the Citra team - Deel anonieme gebruiksdata met het Citra team - - - - Learn more - Meer leren - - - - Telemetry ID: - Telemetrie ID: - - - - Regenerate - Regenereren - - - - Discord Presence - Discord Presence - - - - Show Current Game in your Discord Status - Toon Huidige Spel in je Discord Status - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Meer leren</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Registreren</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">Wat is mijn token?</span></a> - - - - - Unspecified - Ongespecificeerd - - - - - Telemetry ID: 0x%1 - Telemetrie ID: 0x%1 - - - - Token not verified - Token niet geverifieerd - - - - Token was not verified. The change to your token has not been saved. - Token is niet geverifieerd. De wijziging van uw token is niet opgeslagen. - - - - Verifying... - Verifiëren... - - - - Verification failed - Verificatie mislukt - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Verificatie mislukt. Controleer of je je token correct hebt ingevoerd en of uw internetverbinding werkt. - - DirectConnect @@ -7012,4 +6876,4 @@ Misschien hebben ze de kamer verlaten. Wait Tree - \ No newline at end of file + diff --git a/dist/languages/pl_PL.ts b/dist/languages/pl_PL.ts index 775a2e108..64be5be5d 100644 --- a/dist/languages/pl_PL.ts +++ b/dist/languages/pl_PL.ts @@ -3583,142 +3583,6 @@ Drag points to change position, or double-click table cells to edit values.Angielski (English) - - ConfigureWeb - - - Form - Formularz - - - - Citra Web Service - Usługa Sieciowa Citra - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - Poprzez wprowadzenia nazwy użytkownika i tokenu, wyrażasz zgodę na wysłanie dodatkowych danych do Citra. Dane te mogą zawierać informacje identyfikujące użytkownika. - - - - - Verify - Zweryfikuj - - - - Sign up - Zarejestruj się - - - - Token: - Token: - - - - Username: - Nazwa Użytkownika: - - - - What is my token? - Czym jest mój token? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - - - - - Telemetry - Telemetria - - - - Share anonymous usage data with the Citra team - Udostępnij anonimowe dane użytkowania zespołowi Citra - - - - Learn more - Dowiedz się więcej - - - - Telemetry ID: - ID Telemetrii: - - - - Regenerate - Regeneruj - - - - Discord Presence - Widoczność na Discordzie - - - - Show Current Game in your Discord Status - Pokaż obecnie włączoną grę w statusie na Discrodzie - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Dowiedz się więcej</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">Czym jest mój token?</span></a> - - - - - Unspecified - - - - - - Telemetry ID: 0x%1 - ID Telemetrii: 0x%1 - - - - Token not verified - Token nie zweryfikowany - - - - Token was not verified. The change to your token has not been saved. - - - - - Verifying... - Weryfikowanie... - - - - Verification failed - Weryfikacja nieudana - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - - - DirectConnect @@ -6992,4 +6856,4 @@ They may have left the room. Kolejka Oczekiwania - \ No newline at end of file + diff --git a/dist/languages/pt_BR.ts b/dist/languages/pt_BR.ts index 9f69f5e9d..8c7da57f5 100644 --- a/dist/languages/pt_BR.ts +++ b/dist/languages/pt_BR.ts @@ -3585,142 +3585,6 @@ Arraste os pontos para alterar a posição ou clique duas vezes nas células da Inglês (English) - - ConfigureWeb - - - Form - Formulário - - - - Citra Web Service - Citra Web Service - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - Ao informar o seu usuário e token, você concorda em permitir ao Citra recolher dados de utilização adicionais, que podem incluir informações de identificação de usuário. - - - - - Verify - Verificar - - - - Sign up - Registrar-se - - - - Token: - Token: - - - - Username: - Nome de usuário - - - - What is my token? - Qual é o meu token? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - As configurações do Web Service não podem ser alteradas quando uma sala pública criada por você estiver em operação. - - - - Telemetry - Telemetria - - - - Share anonymous usage data with the Citra team - Compartilhar anonimamente dados de utilização com a equipe do Citra - - - - Learn more - Saiba mais - - - - Telemetry ID: - ID de telemetria: - - - - Regenerate - Gerar um novo - - - - Discord Presence - Presença no Discord - - - - Show Current Game in your Discord Status - Mostrar o jogo atual no seu perfil do Discord - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Saber mais</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Registrar-se</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">Qual é o meu token?</span></a> - - - - - Unspecified - Não especificado - - - - - Telemetry ID: 0x%1 - ID de telemetria: 0x%1 - - - - Token not verified - Token não verificado - - - - Token was not verified. The change to your token has not been saved. - O token não foi verificado. A alteração no seu token não foi salva. - - - - Verifying... - Verificando... - - - - Verification failed - Falha na verificação - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Falha na verificação. Verifique se o token foi inserido corretamente e se a conexão à internet está funcionando. - - DirectConnect @@ -7005,4 +6869,4 @@ They may have left the room. Árvore de espera - \ No newline at end of file + diff --git a/dist/languages/ro_RO.ts b/dist/languages/ro_RO.ts index d6dbe5b42..141b171a6 100644 --- a/dist/languages/ro_RO.ts +++ b/dist/languages/ro_RO.ts @@ -3584,142 +3584,6 @@ Drag points to change position, or double-click table cells to edit values.Engleză - - ConfigureWeb - - - Form - Model - - - - Citra Web Service - Citra Serviciu Web - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - Furnizând numele de utilizator și token-ul, sunteți de acord să permiți companiei Citra să colecteze date suplimentare de utilizare, care pot include informații de identificare a utilizatorului. - - - - - Verify - Verificați - - - - Sign up - Înregistrare - - - - Token: - Token: - - - - Username: - Nume de utilizator: - - - - What is my token? - Care este token-ul meu? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - Configurarea de săli publice poate fi modificată doar când o sală publică nu este găzduită. - - - - Telemetry - Telemetrie - - - - Share anonymous usage data with the Citra team - Distribuiți date de utilizare anonime cu echipa Citra - - - - Learn more - Mai multe informații - - - - Telemetry ID: - ID telemetrie: - - - - Regenerate - Regenerează - - - - Discord Presence - Prezență pe Discord - - - - Show Current Game in your Discord Status - Afișează Jocul Prezent pe Statusul Discord - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Mai multe informații</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Înregistrare</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">Care este token-ul meu?</span></a> - - - - - Unspecified - Nespecificat - - - - - Telemetry ID: 0x%1 - ID de Telemetrie: 0x%1 - - - - Token not verified - - - - - Token was not verified. The change to your token has not been saved. - - - - - Verifying... - Verificănd... - - - - Verification failed - Verificare eșuată - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - - - DirectConnect @@ -6999,4 +6863,4 @@ They may have left the room. Copac de Așteptare - \ No newline at end of file + diff --git a/dist/languages/ru_RU.ts b/dist/languages/ru_RU.ts index a2f981d02..992939f49 100644 --- a/dist/languages/ru_RU.ts +++ b/dist/languages/ru_RU.ts @@ -3587,143 +3587,6 @@ Drag points to change position, or double-click table cells to edit values.Английский - - ConfigureWeb - - - Form - Форма - - - - Citra Web Service - Веб-сервис Citra - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - Отправка имени пользователя и токена означает согласие на сбор приложением Citra дополнительных данных об использовании, -которые могут включать сведения, идентифицирующие пользователя. - - - - - Verify - Подтвердить - - - - Sign up - Регистрация - - - - Token: - Токен: - - - - Username: - Имя пользователя: - - - - What is my token? - Что такое токен? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - Настройки веб-сервиса можно изменять только в том случае, если на компьютере не размещается публичная комната чата. - - - - Telemetry - Телеметрия - - - - Share anonymous usage data with the Citra team - Поделиться анонимными данными использования с командой Citra - - - - Learn more - Дополнительная информация - - - - Telemetry ID: - ID телеметрии: - - - - Regenerate - Пересоздать - - - - Discord Presence - Интеграция с Discord - - - - Show Current Game in your Discord Status - Показывать текущую игру в статусе Discord - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Дополнительная информация</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Зарегистрироваться</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">Что такое токен?</span></a> - - - - - Unspecified - Не указано - - - - - Telemetry ID: 0x%1 - ID телеметрии: 0x%1 - - - - Token not verified - Токен не проверен - - - - Token was not verified. The change to your token has not been saved. - Токен не был проверен. Изменения к токену сохранены не были. - - - - Verifying... - Проверка... - - - - Verification failed - Сбой проверки - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Сбой проверки. Убедитесь в том, что токен введён верно и подключение к Интернету работает. - - DirectConnect @@ -7005,4 +6868,4 @@ They may have left the room. Дерево цепочки ожидания - \ No newline at end of file + diff --git a/dist/languages/tr_TR.ts b/dist/languages/tr_TR.ts index af5538d49..025759bdf 100644 --- a/dist/languages/tr_TR.ts +++ b/dist/languages/tr_TR.ts @@ -3583,142 +3583,6 @@ Drag points to change position, or double-click table cells to edit values.İngilizce - - ConfigureWeb - - - Form - Form - - - - Citra Web Service - Citra Ağ Servisi - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - Kullanıcı adınızı ve tokeninizi sağlayarak Citra'nın ek kullanım verilerini toplamasına izin vermeyi kabul ediyorsunuz, bu kullanıcı tanımlayıcı bilgileri de içerebilir. - - - - - Verify - Doğrula - - - - Sign up - Kaydol - - - - Token: - Token: - - - - Username: - Kullanıcı Adı: - - - - What is my token? - Tokenim nedir? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - Web servisi yapılandırması yalnızca Herkese Açık Oda sunulmadığı sürece değiştirilebilir. - - - - Telemetry - Telemetri - - - - Share anonymous usage data with the Citra team - Citra ekibiyle anonim kullanım verilerini paylaş - - - - Learn more - Daha fazla bilgi edinin - - - - Telemetry ID: - Telemetri ID: - - - - Regenerate - Yeniden Oluştur - - - - Discord Presence - Discord Görünümü - - - - Show Current Game in your Discord Status - Şu Anki Oyunu Discord Durumunda Göster - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Daha fazla bilgi edinin</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Kaydol</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">Tokenim nedir?</span></a> - - - - - Unspecified - Belirtilmemiş - - - - - Telemetry ID: 0x%1 - Telemetri ID: 0x%1 - - - - Token not verified - Token doğrulanmadı - - - - Token was not verified. The change to your token has not been saved. - Token doğrulanmadı. Token'inizdeki değişiklikler kaydedilmeyecektir. - - - - Verifying... - Doğrulanıyor... - - - - Verification failed - Doğrulama başarısız oldu - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Doğrulama başarısız oldu. Token'inizi doğru girdiğinizden ve internet bağlantınızın çalıştığından emin olun. - - DirectConnect @@ -7001,4 +6865,4 @@ They may have left the room. Wait Tree - \ No newline at end of file + diff --git a/dist/languages/vi_VN.ts b/dist/languages/vi_VN.ts index f2d2b2767..617efbbe2 100644 --- a/dist/languages/vi_VN.ts +++ b/dist/languages/vi_VN.ts @@ -3583,142 +3583,6 @@ Drag points to change position, or double-click table cells to edit values.Tiếng Anh - - ConfigureWeb - - - Form - Định dạng - - - - Citra Web Service - Dịch vụ Web Citra - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - Bằng việc cung cấp tên tài khoản và token, bạn đã cho phép Citra thu thập các thông tin liên quan đến giả lập, cũng như bao gồm các thông tin định danh người dùng. - - - - - Verify - Xác thực - - - - Sign up - Đăng ký - - - - Token: - Token: - - - - Username: - Tên người dùng: - - - - What is my token? - Token của tôi là gì? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - Thiết lập cho Dịch vụ web chỉ thay đổi được khi đang không tổ chức phòng công khai nào. - - - - Telemetry - Theo dõi từ xa - - - - Share anonymous usage data with the Citra team - Gửi các dữ liệu sử dụng nặc danh cho đội ngũ Citra - - - - Learn more - Tìm hiểu thêm - - - - Telemetry ID: - Mã theo dõi: - - - - Regenerate - Tạo mới - - - - Discord Presence - - - - - Show Current Game in your Discord Status - Hiển thị game đang chơi trên trạng thái Discord - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Tìm hiểu thêm</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Đăng ký</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">Token là gì?</span></a> - - - - - Unspecified - Chưa định nghĩa - - - - - Telemetry ID: 0x%1 - Mã theo dõi: 0x%1 - - - - Token not verified - Token không được xác thực - - - - Token was not verified. The change to your token has not been saved. - Token này chưa được xác thực. Thay đổi về token chưa được lưu. - - - - Verifying... - Đang xác thực... - - - - Verification failed - Xác thực thất bại - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Xác thực thất bại. Vui lòng kiểm tra token đã nhập vào là đúng, và hiện thiết bị đang kết nối đến mạng. - - DirectConnect @@ -6997,4 +6861,4 @@ They may have left the room. Wait Tree - \ No newline at end of file + diff --git a/dist/languages/zh_CN.ts b/dist/languages/zh_CN.ts index bd513f7cd..402eafcb4 100644 --- a/dist/languages/zh_CN.ts +++ b/dist/languages/zh_CN.ts @@ -3585,142 +3585,6 @@ Drag points to change position, or double-click table cells to edit values.英语 - - ConfigureWeb - - - Form - 格式 - - - - Citra Web Service - Citra 网络服务 - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - 提供您的用户名和令牌意味着您同意让 Citra 收集额外的使用数据,其中可能包括用户识别信息。 - - - - - Verify - 验证 - - - - Sign up - 注册 - - - - Token: - 令牌: - - - - Username: - 用户名: - - - - What is my token? - 我的令牌是? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - 您只能在公共房间未被创建时更改网络服务设置。 - - - - Telemetry - 使用数据共享 - - - - Share anonymous usage data with the Citra team - 与 Citra 团队共享匿名使用数据 - - - - Learn more - 了解更多 - - - - Telemetry ID: - 数据 ID: - - - - Regenerate - 重新生成 - - - - Discord Presence - Discord 状态 - - - - Show Current Game in your Discord Status - 在您的 Discord 状态中显示当前游戏 - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">了解更多</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">注册</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">我的令牌是?</span></a> - - - - - Unspecified - 未指定 - - - - - Telemetry ID: 0x%1 - 数据 ID: 0x%1 - - - - Token not verified - 您的令牌未被验证 - - - - Token was not verified. The change to your token has not been saved. - 令牌未验证。您对令牌的更改未被保存。 - - - - Verifying... - 验证中... - - - - Verification failed - 验证失败 - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - 验证失败。请检查您输入的令牌并确保您的网络连接正常。 - - DirectConnect @@ -7009,4 +6873,4 @@ They may have left the room. 等待树 - \ No newline at end of file + diff --git a/dist/languages/zh_TW.ts b/dist/languages/zh_TW.ts index 6456d35a5..55eb19ad9 100644 --- a/dist/languages/zh_TW.ts +++ b/dist/languages/zh_TW.ts @@ -3584,142 +3584,6 @@ Drag points to change position, or double-click table cells to edit values.English - - ConfigureWeb - - - Form - Form - - - - Citra Web Service - Citra 網路服務 - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - 提供使用者名稱和權杖,即代表您同意讓 Citra 收集額外的使用資料,其中可能包含使用者辨識資訊。 - - - - - Verify - 驗證 - - - - Sign up - 註冊 - - - - Token: - 權杖: - - - - Username: - 使用者名稱: - - - - What is my token? - 什麼是 Citra 權杖? - - - - Web Service configuration can only be changed when a public room isn't being hosted. - 您不能在公共房間建立時更改網路服務設定。 - - - - Telemetry - 遠端遙測 - - - - Share anonymous usage data with the Citra team - 分享匿名使用資料給 Citra 團隊 - - - - Learn more - 了解更多 - - - - Telemetry ID: - 遙測 ID: - - - - Regenerate - 更換 ID - - - - Discord Presence - Discord 狀態 - - - - Show Current Game in your Discord Status - 在 Discord 狀態中顯示正在玩的遊戲 - - - - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'><span style="text-decoration: underline; color:#039be5;">了解更多</span></a> - - - - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.citra-emu.org/'><span style="text-decoration: underline; color:#039be5;">註冊</span></a> - - - - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://citra-emu.org/wiki/citra-web-service/'><span style="text-decoration: underline; color:#039be5;">什麼是 Citra 權杖?</span></a> - - - - - Unspecified - - - - - - Telemetry ID: 0x%1 - 遙測 ID:0x%1 - - - - Token not verified - - - - - Token was not verified. The change to your token has not been saved. - - - - - Verifying... - 驗證中… - - - - Verification failed - 驗證失敗 - - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - - - DirectConnect @@ -7001,4 +6865,4 @@ They may have left the room. 樹狀等待 - \ No newline at end of file + diff --git a/src/android/app/src/main/jni/config.cpp b/src/android/app/src/main/jni/config.cpp index 9f86861c8..4e862f3a0 100644 --- a/src/android/app/src/main/jni/config.cpp +++ b/src/android/app/src/main/jni/config.cpp @@ -266,8 +266,6 @@ void Config::ReadValues() { } // Web Service - NetSettings::values.enable_telemetry = - sdl2_config->GetBoolean("WebService", "enable_telemetry", false); NetSettings::values.web_api_url = sdl2_config->GetString("WebService", "web_api_url", "https://api.citra-emu.org"); NetSettings::values.citra_username = sdl2_config->GetString("WebService", "citra_username", ""); diff --git a/src/android/app/src/main/jni/default_ini.h b/src/android/app/src/main/jni/default_ini.h index 31df12c5f..c46395fea 100644 --- a/src/android/app/src/main/jni/default_ini.h +++ b/src/android/app/src/main/jni/default_ini.h @@ -353,9 +353,6 @@ gdbstub_port=24689 # To LLE a service module add "LLE\=true" [WebService] -# Whether or not to enable telemetry -# 0 (default): No, 1: Yes -enable_telemetry = # URL for Web API web_api_url = https://api.citra-emu.org # Username and token for Citra Web Service diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp index c670f7d19..13dbc0f2c 100644 --- a/src/android/app/src/main/jni/native.cpp +++ b/src/android/app/src/main/jni/native.cpp @@ -38,7 +38,6 @@ #include "core/hle/service/nfc/nfc.h" #include "core/loader/loader.h" #include "core/savestate.h" -#include "core/telemetry_session.h" #include "jni/android_common/android_common.h" #include "jni/applets/mii_selector.h" #include "jni/applets/swkbd.h" @@ -207,9 +206,6 @@ static Core::System::ResultStatus RunCitra(const std::string& filepath) { return load_result; } - auto& telemetry_session = system.TelemetrySession(); - telemetry_session.AddField(Common::Telemetry::FieldType::App, "Frontend", "Android"); - stop_run = false; pause_emulation = false; diff --git a/src/citra/citra.cpp b/src/citra/citra.cpp index 8488b64df..52d64f1e8 100644 --- a/src/citra/citra.cpp +++ b/src/citra/citra.cpp @@ -39,7 +39,6 @@ #include "core/hle/service/am/am.h" #include "core/hle/service/cfg/cfg.h" #include "core/movie.h" -#include "core/telemetry_session.h" #include "input_common/main.h" #include "network/network.h" #include "video_core/gpu.h" @@ -436,8 +435,6 @@ int main(int argc, char** argv) { break; } - system.TelemetrySession().AddField(Common::Telemetry::FieldType::App, "Frontend", "SDL"); - if (use_multiplayer) { if (auto member = Network::GetRoomMember().lock()) { member->BindOnChatMessageRecieved(OnMessageReceived); diff --git a/src/citra/config.cpp b/src/citra/config.cpp index 32e7ae1ef..e47421102 100644 --- a/src/citra/config.cpp +++ b/src/citra/config.cpp @@ -328,8 +328,6 @@ void Config::ReadValues() { } // Web Service - NetSettings::values.enable_telemetry = - sdl2_config->GetBoolean("WebService", "enable_telemetry", false); NetSettings::values.web_api_url = sdl2_config->GetString("WebService", "web_api_url", "https://api.citra-emu.org"); NetSettings::values.citra_username = sdl2_config->GetString("WebService", "citra_username", ""); diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h index be3c67948..b3cdf9293 100644 --- a/src/citra/default_ini.h +++ b/src/citra/default_ini.h @@ -361,9 +361,6 @@ renderer_debug = # To LLE a service module add "LLE\=true" [WebService] -# Whether or not to enable telemetry -# 0 (default): No, 1: Yes -enable_telemetry = # URL for Web API web_api_url = https://api.citra-emu.org # Username and token for Citra Web Service diff --git a/src/citra_qt/CMakeLists.txt b/src/citra_qt/CMakeLists.txt index b17a143d3..d8fce8c41 100644 --- a/src/citra_qt/CMakeLists.txt +++ b/src/citra_qt/CMakeLists.txt @@ -81,9 +81,6 @@ add_executable(citra-qt configuration/configure_ui.cpp configuration/configure_ui.h configuration/configure_ui.ui - configuration/configure_web.cpp - configuration/configure_web.h - configuration/configure_web.ui configuration/configure_cheats.cpp configuration/configure_cheats.h configuration/configure_cheats.ui diff --git a/src/citra_qt/compatdb.cpp b/src/citra_qt/compatdb.cpp index ca8f5870a..62066b6ff 100644 --- a/src/citra_qt/compatdb.cpp +++ b/src/citra_qt/compatdb.cpp @@ -7,14 +7,12 @@ #include #include #include "citra_qt/compatdb.h" -#include "common/telemetry.h" #include "core/core.h" -#include "core/telemetry_session.h" #include "ui_compatdb.h" -CompatDB::CompatDB(Core::TelemetrySession& telemetry_session_, QWidget* parent) +CompatDB::CompatDB(QWidget* parent) : QWizard(parent, Qt::WindowTitleHint | Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint), - ui{std::make_unique()}, telemetry_session{telemetry_session_} { + ui{std::make_unique()} { ui->setupUi(this); connect(ui->radioButton_Perfect, &QRadioButton::clicked, this, &CompatDB::EnableNext); connect(ui->radioButton_Great, &QRadioButton::clicked, this, &CompatDB::EnableNext); @@ -52,15 +50,11 @@ void CompatDB::Submit() { case CompatDBPage::Final: back(); LOG_DEBUG(Frontend, "Compatibility Rating: {}", compatibility->checkedId()); - telemetry_session.AddField(Common::Telemetry::FieldType::UserFeedback, "Compatibility", - compatibility->checkedId()); button(NextButton)->setEnabled(false); button(NextButton)->setText(tr("Submitting")); button(CancelButton)->setVisible(false); - testcase_watcher.setFuture( - QtConcurrent::run([this] { return telemetry_session.SubmitTestcase(); })); break; default: LOG_ERROR(Frontend, "Unexpected page: {}", currentId()); diff --git a/src/citra_qt/compatdb.h b/src/citra_qt/compatdb.h index b8ae5e209..5381f67f7 100644 --- a/src/citra_qt/compatdb.h +++ b/src/citra_qt/compatdb.h @@ -8,10 +8,6 @@ #include #include -namespace Core { -class TelemetrySession; -} - namespace Ui { class CompatDB; } @@ -20,7 +16,7 @@ class CompatDB : public QWizard { Q_OBJECT public: - explicit CompatDB(Core::TelemetrySession& telemetry_session_, QWidget* parent = nullptr); + explicit CompatDB(QWidget* parent = nullptr); ~CompatDB(); private: @@ -31,6 +27,4 @@ private: void Submit(); void OnTestcaseSubmitted(); void EnableNext(); - - Core::TelemetrySession& telemetry_session; }; diff --git a/src/citra_qt/configuration/config.cpp b/src/citra_qt/configuration/config.cpp index f3714a447..7ddbc7eb9 100644 --- a/src/citra_qt/configuration/config.cpp +++ b/src/citra_qt/configuration/config.cpp @@ -837,8 +837,6 @@ void Config::ReadUpdaterValues() { void Config::ReadWebServiceValues() { qt_config->beginGroup(QStringLiteral("WebService")); - NetSettings::values.enable_telemetry = - ReadSetting(QStringLiteral("enable_telemetry"), false).toBool(); NetSettings::values.web_api_url = ReadSetting(QStringLiteral("web_api_url"), QStringLiteral("https://api.citra-emu.org")) .toString() @@ -1319,7 +1317,6 @@ void Config::SaveUpdaterValues() { void Config::SaveWebServiceValues() { qt_config->beginGroup(QStringLiteral("WebService")); - WriteSetting(QStringLiteral("enable_telemetry"), NetSettings::values.enable_telemetry, false); WriteSetting(QStringLiteral("web_api_url"), QString::fromStdString(NetSettings::values.web_api_url), QStringLiteral("https://api.citra-emu.org")); diff --git a/src/citra_qt/configuration/configure.ui b/src/citra_qt/configuration/configure.ui index f6f5a517a..e94cbbc9c 100644 --- a/src/citra_qt/configuration/configure.ui +++ b/src/citra_qt/configuration/configure.ui @@ -97,12 +97,6 @@
configuration/configure_enhancements.h
1 - - ConfigureWeb - QWidget -
configuration/configure_web.h
- 1 -
ConfigureUi QWidget diff --git a/src/citra_qt/configuration/configure_dialog.cpp b/src/citra_qt/configuration/configure_dialog.cpp index 1644b657a..4dd5635c5 100644 --- a/src/citra_qt/configuration/configure_dialog.cpp +++ b/src/citra_qt/configuration/configure_dialog.cpp @@ -16,7 +16,6 @@ #include "citra_qt/configuration/configure_storage.h" #include "citra_qt/configuration/configure_system.h" #include "citra_qt/configuration/configure_ui.h" -#include "citra_qt/configuration/configure_web.h" #include "citra_qt/hotkeys.h" #include "common/settings.h" #include "core/core.h" @@ -38,7 +37,7 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry_, Cor camera_tab{std::make_unique(this)}, debug_tab{std::make_unique(is_powered_on, this)}, storage_tab{std::make_unique(is_powered_on, this)}, - web_tab{std::make_unique(this)}, ui_tab{std::make_unique(this)} { + ui_tab{std::make_unique(this)} { Settings::SetConfiguringGlobal(true); ui->setupUi(this); @@ -53,11 +52,9 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry_, Cor ui->tabWidget->addTab(camera_tab.get(), tr("Camera")); ui->tabWidget->addTab(debug_tab.get(), tr("Debug")); ui->tabWidget->addTab(storage_tab.get(), tr("Storage")); - ui->tabWidget->addTab(web_tab.get(), tr("Web")); ui->tabWidget->addTab(ui_tab.get(), tr("UI")); hotkeys_tab->Populate(registry); - web_tab->SetWebServiceConfigEnabled(enable_web_config); PopulateSelectionList(); @@ -90,7 +87,6 @@ void ConfigureDialog::SetConfiguration() { audio_tab->SetConfiguration(); camera_tab->SetConfiguration(); debug_tab->SetConfiguration(); - web_tab->SetConfiguration(); ui_tab->SetConfiguration(); storage_tab->SetConfiguration(); } @@ -106,7 +102,6 @@ void ConfigureDialog::ApplyConfiguration() { audio_tab->ApplyConfiguration(); camera_tab->ApplyConfiguration(); debug_tab->ApplyConfiguration(); - web_tab->ApplyConfiguration(); ui_tab->ApplyConfiguration(); storage_tab->ApplyConfiguration(); system.ApplySettings(); @@ -119,7 +114,7 @@ void ConfigureDialog::PopulateSelectionList() { ui->selectorList->clear(); const std::array>, 5> items{ - {{tr("General"), {general_tab.get(), web_tab.get(), debug_tab.get(), ui_tab.get()}}, + {{tr("General"), {general_tab.get(), debug_tab.get(), ui_tab.get()}}, {tr("System"), {system_tab.get(), camera_tab.get(), storage_tab.get()}}, {tr("Graphics"), {enhancements_tab.get(), graphics_tab.get()}}, {tr("Audio"), {audio_tab.get()}}, @@ -159,7 +154,6 @@ void ConfigureDialog::RetranslateUI() { audio_tab->RetranslateUI(); camera_tab->RetranslateUI(); debug_tab->RetranslateUI(); - web_tab->RetranslateUI(); ui_tab->RetranslateUI(); storage_tab->RetranslateUI(); } @@ -179,7 +173,6 @@ void ConfigureDialog::UpdateVisibleTabs() { {camera_tab.get(), tr("Camera")}, {debug_tab.get(), tr("Debug")}, {storage_tab.get(), tr("Storage")}, - {web_tab.get(), tr("Web")}, {ui_tab.get(), tr("UI")}}; ui->tabWidget->clear(); diff --git a/src/citra_qt/configuration/configure_dialog.h b/src/citra_qt/configuration/configure_dialog.h index db2549fcb..ac500224e 100644 --- a/src/citra_qt/configuration/configure_dialog.h +++ b/src/citra_qt/configuration/configure_dialog.h @@ -29,7 +29,6 @@ class ConfigureAudio; class ConfigureCamera; class ConfigureDebug; class ConfigureStorage; -class ConfigureWeb; class ConfigureUi; class ConfigureDialog : public QDialog { @@ -70,6 +69,5 @@ private: std::unique_ptr camera_tab; std::unique_ptr debug_tab; std::unique_ptr storage_tab; - std::unique_ptr web_tab; std::unique_ptr ui_tab; }; diff --git a/src/citra_qt/configuration/configure_web.cpp b/src/citra_qt/configuration/configure_web.cpp deleted file mode 100644 index b9a15b6ec..000000000 --- a/src/citra_qt/configuration/configure_web.cpp +++ /dev/null @@ -1,165 +0,0 @@ -// Copyright 2017 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#include -#include -#include -#include "citra_qt/configuration/configure_web.h" -#include "citra_qt/uisettings.h" -#include "core/telemetry_session.h" -#include "network/network_settings.h" -#include "ui_configure_web.h" - -static constexpr char token_delimiter{':'}; - -static std::string GenerateDisplayToken(const std::string& username, const std::string& token) { - if (username.empty() || token.empty()) { - return {}; - } - - const std::string unencoded_display_token{username + token_delimiter + token}; - QByteArray b{unencoded_display_token.c_str()}; - QByteArray b64 = b.toBase64(); - return b64.toStdString(); -} - -static std::string UsernameFromDisplayToken(const std::string& display_token) { - const std::string unencoded_display_token{ - QByteArray::fromBase64(display_token.c_str()).toStdString()}; - return unencoded_display_token.substr(0, unencoded_display_token.find(token_delimiter)); -} - -static std::string TokenFromDisplayToken(const std::string& display_token) { - const std::string unencoded_display_token{ - QByteArray::fromBase64(display_token.c_str()).toStdString()}; - return unencoded_display_token.substr(unencoded_display_token.find(token_delimiter) + 1); -} - -ConfigureWeb::ConfigureWeb(QWidget* parent) - : QWidget(parent), ui(std::make_unique()) { - ui->setupUi(this); - connect(ui->button_regenerate_telemetry_id, &QPushButton::clicked, this, - &ConfigureWeb::RefreshTelemetryID); - connect(ui->button_verify_login, &QPushButton::clicked, this, &ConfigureWeb::VerifyLogin); - connect(&verify_watcher, &QFutureWatcher::finished, this, &ConfigureWeb::OnLoginVerified); - -#ifndef USE_DISCORD_PRESENCE - ui->discord_group->setVisible(false); -#endif - SetConfiguration(); -} - -ConfigureWeb::~ConfigureWeb() = default; - -void ConfigureWeb::SetConfiguration() { - ui->web_credentials_disclaimer->setWordWrap(true); - ui->telemetry_learn_more->setOpenExternalLinks(true); - ui->telemetry_learn_more->setText(tr("Learn more")); - - ui->web_signup_link->setOpenExternalLinks(true); - ui->web_signup_link->setText( - tr("Sign up")); - ui->web_token_info_link->setOpenExternalLinks(true); - ui->web_token_info_link->setText( - tr("What is my token?")); - - ui->toggle_telemetry->setChecked(NetSettings::values.enable_telemetry); - - if (NetSettings::values.citra_username.empty()) { - ui->username->setText(tr("Unspecified")); - } else { - ui->username->setText(QString::fromStdString(NetSettings::values.citra_username)); - } - - ui->edit_token->setText(QString::fromStdString( - GenerateDisplayToken(NetSettings::values.citra_username, NetSettings::values.citra_token))); - - // Connect after setting the values, to avoid calling OnLoginChanged now - connect(ui->edit_token, &QLineEdit::textChanged, this, &ConfigureWeb::OnLoginChanged); - ui->label_telemetry_id->setText( - tr("Telemetry ID: 0x%1").arg(QString::number(Core::GetTelemetryId(), 16).toUpper())); - user_verified = true; - - ui->toggle_discordrpc->setChecked(UISettings::values.enable_discord_presence.GetValue()); -} - -void ConfigureWeb::ApplyConfiguration() { - NetSettings::values.enable_telemetry = ui->toggle_telemetry->isChecked(); - UISettings::values.enable_discord_presence = ui->toggle_discordrpc->isChecked(); - if (user_verified) { - NetSettings::values.citra_username = - UsernameFromDisplayToken(ui->edit_token->text().toStdString()); - NetSettings::values.citra_token = - TokenFromDisplayToken(ui->edit_token->text().toStdString()); - } else { - QMessageBox::warning( - this, tr("Token not verified"), - tr("Token was not verified. The change to your token has not been saved.")); - } -} - -void ConfigureWeb::RefreshTelemetryID() { - const u64 new_telemetry_id{Core::RegenerateTelemetryId()}; - ui->label_telemetry_id->setText( - tr("Telemetry ID: 0x%1").arg(QString::number(new_telemetry_id, 16).toUpper())); -} - -void ConfigureWeb::OnLoginChanged() { - if (ui->edit_token->text().isEmpty()) { - user_verified = true; - - const QPixmap pixmap = QIcon::fromTheme(QStringLiteral("checked")).pixmap(16); - ui->label_token_verified->setPixmap(pixmap); - } else { - user_verified = false; - - const QPixmap pixmap = QIcon::fromTheme(QStringLiteral("failed")).pixmap(16); - ui->label_token_verified->setPixmap(pixmap); - } -} - -void ConfigureWeb::VerifyLogin() { - ui->button_verify_login->setDisabled(true); - ui->button_verify_login->setText(tr("Verifying...")); - verify_watcher.setFuture(QtConcurrent::run( - [username = UsernameFromDisplayToken(ui->edit_token->text().toStdString()), - token = TokenFromDisplayToken(ui->edit_token->text().toStdString())] { - return Core::VerifyLogin(username, token); - })); -} - -void ConfigureWeb::OnLoginVerified() { - ui->button_verify_login->setEnabled(true); - ui->button_verify_login->setText(tr("Verify")); - if (verify_watcher.result()) { - user_verified = true; - - const QPixmap pixmap = QIcon::fromTheme(QStringLiteral("checked")).pixmap(16); - ui->label_token_verified->setPixmap(pixmap); - ui->username->setText( - QString::fromStdString(UsernameFromDisplayToken(ui->edit_token->text().toStdString()))); - } else { - const QPixmap pixmap = QIcon::fromTheme(QStringLiteral("failed")).pixmap(16); - ui->label_token_verified->setPixmap(pixmap); - ui->username->setText(tr("Unspecified")); - QMessageBox::critical(this, tr("Verification failed"), - tr("Verification failed. Check that you have entered your token " - "correctly, and that your internet connection is working.")); - } -} - -void ConfigureWeb::RetranslateUI() { - ui->retranslateUi(this); -} - -void ConfigureWeb::SetWebServiceConfigEnabled(bool enabled) { - ui->label_disable_info->setVisible(!enabled); - ui->groupBoxWebConfig->setEnabled(enabled); -} diff --git a/src/citra_qt/configuration/configure_web.h b/src/citra_qt/configuration/configure_web.h deleted file mode 100644 index a9b2566f8..000000000 --- a/src/citra_qt/configuration/configure_web.h +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2017 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#pragma once - -#include -#include -#include - -namespace Ui { -class ConfigureWeb; -} - -class ConfigureWeb : public QWidget { - Q_OBJECT - -public: - explicit ConfigureWeb(QWidget* parent = nullptr); - ~ConfigureWeb() override; - - void ApplyConfiguration(); - void RetranslateUI(); - void SetConfiguration(); - void SetWebServiceConfigEnabled(bool enabled); - -private: - void RefreshTelemetryID(); - void OnLoginChanged(); - void VerifyLogin(); - void OnLoginVerified(); - - bool user_verified = true; - QFutureWatcher verify_watcher; - - std::unique_ptr ui; -}; diff --git a/src/citra_qt/configuration/configure_web.ui b/src/citra_qt/configuration/configure_web.ui deleted file mode 100644 index c87cf48e6..000000000 --- a/src/citra_qt/configuration/configure_web.ui +++ /dev/null @@ -1,214 +0,0 @@ - - - ConfigureWeb - - - - 0 - 0 - 996 - 561 - - - - Form - - - - - - - - Citra Web Service - - - - - - By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. - - - - - - - - - - 0 - 0 - - - - Qt::RightToLeft - - - Verify - - - - - - - Sign up - - - - - - - - - - Token: - - - - - - - - - - Username: - - - - - - - 80 - - - QLineEdit::Password - - - - - - - What is my token? - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - Web Service configuration can only be changed when a public room isn't being hosted. - - - true - - - - - - - Telemetry - - - - - - Share anonymous usage data with the Citra team - - - - - - - Learn more - - - - - - - - - Telemetry ID: - - - - - - - - 0 - 0 - - - - Qt::RightToLeft - - - Regenerate - - - - - - - - - - - - - - Discord Presence - - - - - - Show Current Game in your Discord Status - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - edit_token - button_verify_login - toggle_telemetry - button_regenerate_telemetry_id - toggle_discordrpc - - - - diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp index 5d8b4204b..e724ea37b 100644 --- a/src/citra_qt/main.cpp +++ b/src/citra_qt/main.cpp @@ -15,7 +15,6 @@ #include #include #include -#include "core/telemetry_session.h" #ifdef __APPLE__ #include // for chdir #endif @@ -128,27 +127,6 @@ constexpr int default_mouse_timeout = 2500; * is a bitfield "callout_flags" options, used to track if a message has already been shown to the * user. This is 32-bits - if we have more than 32 callouts, we should retire and recycle old ones. */ -enum class CalloutFlag : uint32_t { - Telemetry = 0x1, -}; - -void GMainWindow::ShowTelemetryCallout() { - if (UISettings::values.callout_flags.GetValue() & - static_cast(CalloutFlag::Telemetry)) { - return; - } - - UISettings::values.callout_flags = - UISettings::values.callout_flags.GetValue() | static_cast(CalloutFlag::Telemetry); - const QString telemetry_message = - tr("Anonymous " - "data is collected to help improve Citra. " - "

Would you like to share your usage data with us?"); - if (QMessageBox::question(this, tr("Telemetry"), telemetry_message) == QMessageBox::Yes) { - NetSettings::values.enable_telemetry = true; - system.ApplySettings(); - } -} const int GMainWindow::max_recent_files_item; @@ -263,9 +241,6 @@ GMainWindow::GMainWindow(Core::System& system_) game_list->LoadCompatibilityList(); game_list->PopulateAsync(UISettings::values.game_dirs); - // Show one-time "callout" messages to the user - ShowTelemetryCallout(); - mouse_hide_timer.setInterval(default_mouse_timeout); connect(&mouse_hide_timer, &QTimer::timeout, this, &GMainWindow::HideMouseCursor); connect(ui->menubar, &QMenuBar::hovered, this, &GMainWindow::OnMouseActivity); @@ -1244,7 +1219,6 @@ bool GMainWindow::LoadROM(const QString& filename) { game_path = filename; - system.TelemetrySession().AddField(Common::Telemetry::FieldType::App, "Frontend", "Qt"); return true; } @@ -1988,7 +1962,7 @@ void GMainWindow::OnLoadComplete() { void GMainWindow::OnMenuReportCompatibility() { if (!NetSettings::values.citra_token.empty() && !NetSettings::values.citra_username.empty()) { - CompatDB compatdb{system.TelemetrySession(), this}; + CompatDB compatdb{this}; compatdb.exec(); } else { QMessageBox::critical(this, tr("Missing Citra Account"), diff --git a/src/citra_qt/main.h b/src/citra_qt/main.h index b64bf1b32..797a4e0e9 100644 --- a/src/citra_qt/main.h +++ b/src/citra_qt/main.h @@ -152,7 +152,6 @@ private: void BootGame(const QString& filename); void ShutdownGame(); - void ShowTelemetryCallout(); void SetDiscordEnabled(bool state); void LoadAmiibo(const QString& filename); diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index f8c953a60..567831249 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -130,8 +130,6 @@ add_library(citra_common STATIC string_util.cpp string_util.h swap.h - telemetry.cpp - telemetry.h texture.cpp texture.h thread.cpp diff --git a/src/common/detached_tasks.h b/src/common/detached_tasks.h index 5dd8fc27b..251cbab4f 100644 --- a/src/common/detached_tasks.h +++ b/src/common/detached_tasks.h @@ -12,10 +12,10 @@ namespace Common { /** * A background manager which ensures that all detached task is finished before program exits. * - * Some tasks, telemetry submission for example, prefer executing asynchronously and don't care - * about the result. These tasks are suitable for std::thread::detach(). However, this is unsafe if - * the task is launched just before the program exits (which is a common case for telemetry), so we - * need to block on these tasks on program exit. + * Some tasks prefer executing asynchronously and don't care + * about the result. These tasks are suitable for std::thread::detach(). + * However, this is unsafe if the task is launched just before the program exits + * so we need to block on these tasks on program exit. * * To make detached task safe, a single DetachedTasks object should be placed in the main(), and * call WaitForAllTasks() after all program execution but before global/static variable destruction. diff --git a/src/common/telemetry.cpp b/src/common/telemetry.cpp index e5fd193ef..8b1378917 100644 --- a/src/common/telemetry.cpp +++ b/src/common/telemetry.cpp @@ -1,92 +1 @@ -// Copyright 2017 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. -#include -#include -#include "common/arch.h" -#include "common/assert.h" -#include "common/scm_rev.h" -#include "common/telemetry.h" - -#if CITRA_ARCH(x86_64) -#include "common/x64/cpu_detect.h" -#endif - -namespace Common::Telemetry { - -void FieldCollection::Accept(VisitorInterface& visitor) const { - for (const auto& field : fields) { - field.second->Accept(visitor); - } -} - -void FieldCollection::AddField(std::unique_ptr field) { - fields[field->GetName()] = std::move(field); -} - -template -void Field::Accept(VisitorInterface& visitor) const { - visitor.Visit(*this); -} - -template class Field; -template class Field; -template class Field; -template class Field; -template class Field; -template class Field; -template class Field; -template class Field; -template class Field; -template class Field; -template class Field; -template class Field; -template class Field; -template class Field; - -void AppendBuildInfo(FieldCollection& fc) { - const bool is_git_dirty{std::strstr(Common::g_scm_desc, "dirty") != nullptr}; - fc.AddField(FieldType::App, "Git_IsDirty", is_git_dirty); - fc.AddField(FieldType::App, "Git_Branch", Common::g_scm_branch); - fc.AddField(FieldType::App, "Git_Revision", Common::g_scm_rev); - fc.AddField(FieldType::App, "BuildDate", Common::g_build_date); - fc.AddField(FieldType::App, "BuildName", Common::g_build_name); -} - -void AppendCPUInfo(FieldCollection& fc) { -#if CITRA_ARCH(x86_64) - fc.AddField(FieldType::UserSystem, "CPU_Model", Common::GetCPUCaps().cpu_string); - fc.AddField(FieldType::UserSystem, "CPU_BrandString", Common::GetCPUCaps().brand_string); - fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AES", Common::GetCPUCaps().aes); - fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AVX", Common::GetCPUCaps().avx); - fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AVX2", Common::GetCPUCaps().avx2); - fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AVX512", Common::GetCPUCaps().avx512); - fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_BMI1", Common::GetCPUCaps().bmi1); - fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_BMI2", Common::GetCPUCaps().bmi2); - fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_FMA", Common::GetCPUCaps().fma); - fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_FMA4", Common::GetCPUCaps().fma4); - fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE", Common::GetCPUCaps().sse); - fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE2", Common::GetCPUCaps().sse2); - fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE3", Common::GetCPUCaps().sse3); - fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSSE3", Common::GetCPUCaps().ssse3); - fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE41", Common::GetCPUCaps().sse4_1); - fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE42", Common::GetCPUCaps().sse4_2); -#else - fc.AddField(FieldType::UserSystem, "CPU_Model", "Other"); -#endif -} - -void AppendOSInfo(FieldCollection& fc) { -#ifdef __APPLE__ - fc.AddField(FieldType::UserSystem, "OsPlatform", "Apple"); -#elif defined(_WIN32) - fc.AddField(FieldType::UserSystem, "OsPlatform", "Windows"); -#elif defined(__linux__) || defined(linux) || defined(__linux) - fc.AddField(FieldType::UserSystem, "OsPlatform", "Linux"); -#else - fc.AddField(FieldType::UserSystem, "OsPlatform", "Unknown"); -#endif -} - -} // namespace Common::Telemetry diff --git a/src/common/telemetry.h b/src/common/telemetry.h index ba5f0c87d..8b1378917 100644 --- a/src/common/telemetry.h +++ b/src/common/telemetry.h @@ -1,199 +1 @@ -// Copyright 2017 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. -#pragma once - -#include -#include -#include -#include -#include "common/common_types.h" - -namespace Common::Telemetry { - -/// Field type, used for grouping fields together in the final submitted telemetry log -enum class FieldType : u8 { - None = 0, ///< No specified field group - App, ///< Citra application fields (e.g. version, branch, etc.) - Session, ///< Emulated session fields (e.g. title ID, log, etc.) - Performance, ///< Emulated performance (e.g. fps, emulated CPU speed, etc.) - UserFeedback, ///< User submitted feedback (e.g. star rating, user notes, etc.) - UserConfig, ///< User configuration fields (e.g. emulated CPU core, renderer, etc.) - UserSystem, ///< User system information (e.g. host CPU type, RAM, etc.) -}; - -struct VisitorInterface; - -/** - * Interface class for telemetry data fields. - */ -class FieldInterface : NonCopyable { -public: - virtual ~FieldInterface() = default; - - /** - * Accept method for the visitor pattern. - * @param visitor Reference to the visitor that will visit this field. - */ - virtual void Accept(VisitorInterface& visitor) const = 0; - - /** - * Gets the name of this field. - * @returns Name of this field as a string. - */ - virtual const std::string& GetName() const = 0; -}; - -/** - * Represents a telemetry data field, i.e. a unit of data that gets logged and submitted to our - * telemetry web service. - */ -template -class Field : public FieldInterface { -public: - Field(FieldType type, std::string name, T value) - : name(std::move(name)), type(type), value(std::move(value)) {} - - Field(const Field&) = default; - Field& operator=(const Field&) = default; - - Field(Field&&) = default; - Field& operator=(Field&& other) = default; - - void Accept(VisitorInterface& visitor) const override; - - [[nodiscard]] const std::string& GetName() const override { - return name; - } - - /** - * Returns the type of the field. - */ - [[nodiscard]] FieldType GetType() const { - return type; - } - - /** - * Returns the value of the field. - */ - [[nodiscard]] const T& GetValue() const { - return value; - } - - [[nodiscard]] bool operator==(const Field& other) const { - return (type == other.type) && (name == other.name) && (value == other.value); - } - - [[nodiscard]] bool operator!=(const Field& other) const { - return !operator==(other); - } - -private: - std::string name; ///< Field name, must be unique - FieldType type{}; ///< Field type, used for grouping fields together - T value; ///< Field value -}; - -/** - * Collection of data fields that have been logged. - */ -class FieldCollection final : NonCopyable { -public: - FieldCollection() = default; - - /** - * Accept method for the visitor pattern, visits each field in the collection. - * @param visitor Reference to the visitor that will visit each field. - */ - void Accept(VisitorInterface& visitor) const; - - /** - * Creates a new field and adds it to the field collection. - * @param type Type of the field to add. - * @param name Name of the field to add. - * @param value Value for the field to add. - */ - template - void AddField(FieldType type, const char* name, T value) { - return AddField(std::make_unique>(type, name, std::move(value))); - } - - /** - * Adds a new field to the field collection. - * @param field Field to add to the field collection. - */ - void AddField(std::unique_ptr field); - -private: - std::map> fields; -}; - -/** - * Telemetry fields visitor interface class. A backend to log to a web service should implement - * this interface. - */ -struct VisitorInterface : NonCopyable { - virtual ~VisitorInterface() = default; - - virtual void Visit(const Field& field) = 0; - virtual void Visit(const Field& field) = 0; - virtual void Visit(const Field& field) = 0; - virtual void Visit(const Field& field) = 0; - virtual void Visit(const Field& field) = 0; - virtual void Visit(const Field& field) = 0; - virtual void Visit(const Field& field) = 0; - virtual void Visit(const Field& field) = 0; - virtual void Visit(const Field& field) = 0; - virtual void Visit(const Field& field) = 0; - virtual void Visit(const Field& field) = 0; - virtual void Visit(const Field& field) = 0; - virtual void Visit(const Field& field) = 0; - virtual void Visit(const Field& field) = 0; - - /// Completion method, called once all fields have been visited - virtual void Complete() = 0; - virtual bool SubmitTestcase() = 0; -}; - -/** - * Empty implementation of VisitorInterface that drops all fields. Used when a functional - * backend implementation is not available. - */ -struct NullVisitor : public VisitorInterface { - ~NullVisitor() = default; - - void Visit(const Field& /*field*/) override {} - void Visit(const Field& /*field*/) override {} - void Visit(const Field& /*field*/) override {} - void Visit(const Field& /*field*/) override {} - void Visit(const Field& /*field*/) override {} - void Visit(const Field& /*field*/) override {} - void Visit(const Field& /*field*/) override {} - void Visit(const Field& /*field*/) override {} - void Visit(const Field& /*field*/) override {} - void Visit(const Field& /*field*/) override {} - void Visit(const Field& /*field*/) override {} - void Visit(const Field& /*field*/) override {} - void Visit(const Field& /*field*/) override {} - void Visit(const Field& /*field*/) override {} - - void Complete() override {} - bool SubmitTestcase() override { - return false; - } -}; - -/// Appends build-specific information to the given FieldCollection, -/// such as branch name, revision hash, etc. -void AppendBuildInfo(FieldCollection& fc); - -/// Appends CPU-specific information to the given FieldCollection, -/// such as instruction set extensions, etc. -void AppendCPUInfo(FieldCollection& fc); - -/// Appends OS-specific information to the given FieldCollection, -/// such as platform name, etc. -void AppendOSInfo(FieldCollection& fc); - -} // namespace Common::Telemetry diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index cf29c05a8..62a9cde64 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -467,8 +467,6 @@ add_library(citra_core STATIC savestate_data.h system_titles.cpp system_titles.h - telemetry_session.cpp - telemetry_session.h tracer/citrace.h tracer/recorder.cpp tracer/recorder.h diff --git a/src/core/core.cpp b/src/core/core.cpp index 7d04abf03..3db61dfcd 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -47,7 +47,6 @@ #ifdef ENABLE_SCRIPTING #include "core/rpc/server.h" #endif -#include "core/telemetry_session.h" #include "network/network.h" #include "video_core/custom_textures/custom_tex_manager.h" #include "video_core/gpu.h" @@ -322,7 +321,6 @@ System::ResultStatus System::Load(Frontend::EmuWindow& emu_window, const std::st restore_plugin_context.reset(); } - telemetry_session->AddInitialInfo(*app_loader); std::shared_ptr process; const Loader::ResultStatus load_result{app_loader->Load(process)}; if (Loader::ResultStatus::Success != load_result) { @@ -452,8 +450,6 @@ System::ResultStatus System::Init(Frontend::EmuWindow& emu_window, Settings::values.output_device.GetValue()); dsp_core->EnableStretching(Settings::values.enable_audio_stretching.GetValue()); - telemetry_session = std::make_unique(); - #ifdef ENABLE_SCRIPTING rpc_server = std::make_unique(*this); #endif @@ -578,16 +574,6 @@ void System::RegisterImageInterface(std::shared_ptr im } void System::Shutdown(bool is_deserializing) { - // Log last frame performance stats - const auto perf_results = GetAndResetPerfStats(); - constexpr auto performance = Common::Telemetry::FieldType::Performance; - - telemetry_session->AddField(performance, "Shutdown_EmulationSpeed", - perf_results.emulation_speed * 100.0); - telemetry_session->AddField(performance, "Shutdown_Framerate", perf_results.game_fps); - telemetry_session->AddField(performance, "Shutdown_Frametime", perf_results.frametime * 1000.0); - telemetry_session->AddField(performance, "Mean_Frametime_MS", - perf_stats ? perf_stats->GetMeanFrametime() : 0); // Shutdown emulation session is_powered_on = false; @@ -599,7 +585,6 @@ void System::Shutdown(bool is_deserializing) { app_loader.reset(); } custom_tex_manager.reset(); - telemetry_session.reset(); #ifdef ENABLE_SCRIPTING rpc_server.reset(); #endif diff --git a/src/core/core.h b/src/core/core.h index 9f7430b72..50d31ff74 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -72,7 +72,6 @@ class AppLoader; namespace Core { class ARM_Interface; -class TelemetrySession; class ExclusiveMonitor; class Timing; @@ -165,14 +164,6 @@ public: return is_powered_on; } - /** - * Returns a reference to the telemetry session for this emulation session. - * @returns Reference to the telemetry session. - */ - [[nodiscard]] Core::TelemetrySession& TelemetrySession() const { - return *telemetry_session; - } - /// Prepare the core emulation for a reschedule void PrepareReschedule(); @@ -385,9 +376,6 @@ private: /// When true, signals that a reschedule should happen bool reschedule_pending{}; - /// Telemetry session for this emulation session - std::unique_ptr telemetry_session; - std::unique_ptr gpu; /// Service manager diff --git a/src/core/hle/service/apt/apt.cpp b/src/core/hle/service/apt/apt.cpp index a3befffd8..3e552dfc4 100644 --- a/src/core/hle/service/apt/apt.cpp +++ b/src/core/hle/service/apt/apt.cpp @@ -34,7 +34,6 @@ #include "core/hw/aes/ccm.h" #include "core/hw/aes/key.h" #include "core/loader/loader.h" -#include "core/telemetry_session.h" SERVICE_CONSTRUCT_IMPL(Service::APT::Module) @@ -274,10 +273,6 @@ void Module::APTInterface::GetSharedFont(Kernel::HLERequestContext& ctx) { IPC::RequestParser rp(ctx); IPC::RequestBuilder rb = rp.MakeBuilder(2, 2); - // Log in telemetry if the game uses the shared font - apt->system.TelemetrySession().AddField(Common::Telemetry::FieldType::Session, - "RequiresSharedFont", true); - if (!apt->shared_font_loaded) { // On real 3DS, font loading happens on booting. However, we load it on demand to coordinate // with CFG region auto configuration, which happens later than APT initialization. diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp index 6b58dc547..ca0a285df 100644 --- a/src/core/loader/ncch.cpp +++ b/src/core/loader/ncch.cpp @@ -26,7 +26,6 @@ #include "core/loader/smdh.h" #include "core/memory.h" #include "core/system_titles.h" -#include "core/telemetry_session.h" #include "network/network.h" namespace Loader { @@ -277,9 +276,6 @@ ResultStatus AppLoader_NCCH::Load(std::shared_ptr& process) { overlay_ncch = &update_ncch; } - system.TelemetrySession().AddField(Common::Telemetry::FieldType::Session, "ProgramId", - program_id); - if (auto room_member = Network::GetRoomMember().lock()) { Network::GameInfo game_info; ReadTitle(game_info.name); diff --git a/src/core/telemetry_session.cpp b/src/core/telemetry_session.cpp deleted file mode 100644 index 8a4f94599..000000000 --- a/src/core/telemetry_session.cpp +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright 2017 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#include - -#include "common/assert.h" -#include "common/common_types.h" -#include "common/file_util.h" -#include "common/logging/log.h" -#include "common/scm_rev.h" -#include "common/settings.h" -#include "core/core.h" -#include "core/loader/loader.h" -#include "core/telemetry_session.h" -#include "network/network_settings.h" - -#ifdef ENABLE_WEB_SERVICE -#include "web_service/telemetry_json.h" -#include "web_service/verify_login.h" -#endif - -namespace Core { - -namespace Telemetry = Common::Telemetry; - -static u64 GenerateTelemetryId() { - u64 telemetry_id{}; - CryptoPP::AutoSeededRandomPool rng; - rng.GenerateBlock(reinterpret_cast(&telemetry_id), sizeof(u64)); - return telemetry_id; -} - -u64 GetTelemetryId() { - u64 telemetry_id{}; - const std::string filename{FileUtil::GetUserPath(FileUtil::UserPath::ConfigDir) + - "telemetry_id"}; - - if (FileUtil::Exists(filename)) { - FileUtil::IOFile file(filename, "rb"); - if (!file.IsOpen()) { - LOG_ERROR(Core, "failed to open telemetry_id: {}", filename); - return {}; - } - file.ReadBytes(&telemetry_id, sizeof(u64)); - } else { - FileUtil::IOFile file(filename, "wb"); - if (!file.IsOpen()) { - LOG_ERROR(Core, "failed to open telemetry_id: {}", filename); - return {}; - } - telemetry_id = GenerateTelemetryId(); - file.WriteBytes(&telemetry_id, sizeof(u64)); - } - - return telemetry_id; -} - -u64 RegenerateTelemetryId() { - const u64 new_telemetry_id{GenerateTelemetryId()}; - const std::string filename{FileUtil::GetUserPath(FileUtil::UserPath::ConfigDir) + - "telemetry_id"}; - - FileUtil::IOFile file(filename, "wb"); - if (!file.IsOpen()) { - LOG_ERROR(Core, "failed to open telemetry_id: {}", filename); - return {}; - } - file.WriteBytes(&new_telemetry_id, sizeof(u64)); - return new_telemetry_id; -} - -bool VerifyLogin(const std::string& username, const std::string& token) { -#ifdef ENABLE_WEB_SERVICE - return WebService::VerifyLogin(NetSettings::values.web_api_url, username, token); -#else - return false; -#endif -} - -TelemetrySession::TelemetrySession() = default; - -TelemetrySession::~TelemetrySession() { - // Log one-time session end information - const s64 shutdown_time{std::chrono::duration_cast( - std::chrono::system_clock::now().time_since_epoch()) - .count()}; - AddField(Telemetry::FieldType::Session, "Shutdown_Time", shutdown_time); - -#ifdef ENABLE_WEB_SERVICE - auto backend = std::make_unique(NetSettings::values.web_api_url, - NetSettings::values.citra_username, - NetSettings::values.citra_token); -#else - auto backend = std::make_unique(); -#endif - - // Complete the session, submitting to the web service backend if necessary - field_collection.Accept(*backend); - if (NetSettings::values.enable_telemetry) { - backend->Complete(); - } -} - -void TelemetrySession::AddInitialInfo(Loader::AppLoader& app_loader) { - // Log one-time top-level information - AddField(Telemetry::FieldType::None, "TelemetryId", GetTelemetryId()); - - // Log one-time session start information - const s64 init_time{std::chrono::duration_cast( - std::chrono::system_clock::now().time_since_epoch()) - .count()}; - AddField(Telemetry::FieldType::Session, "Init_Time", init_time); - std::string program_name; - const Loader::ResultStatus res{app_loader.ReadTitle(program_name)}; - if (res == Loader::ResultStatus::Success) { - AddField(Telemetry::FieldType::Session, "ProgramName", program_name); - } - - // Log application information - Telemetry::AppendBuildInfo(field_collection); - - // Log user system information - Telemetry::AppendCPUInfo(field_collection); - Telemetry::AppendOSInfo(field_collection); - - // Log user configuration information - AddField(Telemetry::FieldType::UserConfig, "Audio_SinkId", - static_cast(Settings::values.output_type.GetValue())); - AddField(Telemetry::FieldType::UserConfig, "Audio_EnableAudioStretching", - Settings::values.enable_audio_stretching.GetValue()); - AddField(Telemetry::FieldType::UserConfig, "Core_UseCpuJit", - Settings::values.use_cpu_jit.GetValue()); - AddField(Telemetry::FieldType::UserConfig, "Renderer_ResolutionFactor", - Settings::values.resolution_factor.GetValue()); - AddField(Telemetry::FieldType::UserConfig, "Renderer_FrameLimit", - Settings::values.frame_limit.GetValue()); - AddField(Telemetry::FieldType::UserConfig, "Renderer_Backend", - static_cast(Settings::values.graphics_api.GetValue())); - AddField(Telemetry::FieldType::UserConfig, "Renderer_UseHwShader", - Settings::values.use_hw_shader.GetValue()); - AddField(Telemetry::FieldType::UserConfig, "Renderer_ShadersAccurateMul", - Settings::values.shaders_accurate_mul.GetValue()); - AddField(Telemetry::FieldType::UserConfig, "Renderer_UseShaderJit", - Settings::values.use_shader_jit.GetValue()); - AddField(Telemetry::FieldType::UserConfig, "Renderer_UseVsync", - Settings::values.use_vsync_new.GetValue()); - AddField(Telemetry::FieldType::UserConfig, "Renderer_FilterMode", - Settings::values.filter_mode.GetValue()); - AddField(Telemetry::FieldType::UserConfig, "Renderer_Render3d", - static_cast(Settings::values.render_3d.GetValue())); - AddField(Telemetry::FieldType::UserConfig, "Renderer_Factor3d", - Settings::values.factor_3d.GetValue()); - AddField(Telemetry::FieldType::UserConfig, "Renderer_MonoRenderOption", - static_cast(Settings::values.mono_render_option.GetValue())); - AddField(Telemetry::FieldType::UserConfig, "System_IsNew3ds", - Settings::values.is_new_3ds.GetValue()); - AddField(Telemetry::FieldType::UserConfig, "System_LLEApplets", - Settings::values.lle_applets.GetValue()); - AddField(Telemetry::FieldType::UserConfig, "System_RegionValue", - Settings::values.region_value.GetValue()); -} - -bool TelemetrySession::SubmitTestcase() { -#ifdef ENABLE_WEB_SERVICE - auto backend = std::make_unique(NetSettings::values.web_api_url, - NetSettings::values.citra_username, - NetSettings::values.citra_token); - field_collection.Accept(*backend); - return backend->SubmitTestcase(); -#else - return false; -#endif -} - -} // namespace Core diff --git a/src/core/telemetry_session.h b/src/core/telemetry_session.h deleted file mode 100644 index f64dd2a64..000000000 --- a/src/core/telemetry_session.h +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2017 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#pragma once - -#include -#include -#include "common/telemetry.h" - -namespace Loader { -class AppLoader; -} - -namespace Core { - -/** - * Instruments telemetry for this emulation session. Creates a new set of telemetry fields on each - * session, logging any one-time fields. Interfaces with the telemetry backend used for submitting - * data to the web service. Submits session data on close. - */ -class TelemetrySession { -public: - explicit TelemetrySession(); - ~TelemetrySession(); - - TelemetrySession(const TelemetrySession&) = delete; - TelemetrySession& operator=(const TelemetrySession&) = delete; - - TelemetrySession(TelemetrySession&&) = delete; - TelemetrySession& operator=(TelemetrySession&&) = delete; - - /** - * Adds the initial telemetry info necessary when starting up a title. - * - * This includes information such as: - * - Telemetry ID - * - Initialization time - * - Title ID - * - Title name - * - Title file format - * - Miscellaneous settings values. - * - * @param app_loader The application loader to use to retrieve - * title-specific information. - */ - void AddInitialInfo(Loader::AppLoader& app_loader); - - /** - * Wrapper around the Telemetry::FieldCollection::AddField method. - * @param type Type of the field to add. - * @param name Name of the field to add. - * @param value Value for the field to add. - */ - template - void AddField(Common::Telemetry::FieldType type, const char* name, T value) { - field_collection.AddField(type, name, std::move(value)); - } - - /** - * Submits a Testcase. - * @returns A bool indicating whether the submission succeeded - */ - bool SubmitTestcase(); - -private: - /// Tracks all added fields for the session - Common::Telemetry::FieldCollection field_collection; -}; - -/** - * Gets TelemetryId, a unique identifier used for the user's telemetry sessions. - * @returns The current TelemetryId for the session. - */ -u64 GetTelemetryId(); - -/** - * Regenerates TelemetryId, a unique identifier used for the user's telemetry sessions. - * @returns The new TelemetryId that was generated. - */ -u64 RegenerateTelemetryId(); - -/** - * Verifies the username and token. - * @param username Citra username to use for authentication. - * @param token Citra token to use for authentication. - * @returns Future with bool indicating whether the verification succeeded - */ -bool VerifyLogin(const std::string& username, const std::string& token); - -} // namespace Core diff --git a/src/network/network_settings.h b/src/network/network_settings.h index 3dc93f529..de79c7786 100644 --- a/src/network/network_settings.h +++ b/src/network/network_settings.h @@ -10,7 +10,6 @@ namespace NetSettings { struct Values { // WebService - bool enable_telemetry; std::string web_api_url; std::string citra_username; std::string citra_token; diff --git a/src/video_core/renderer_opengl/gl_driver.cpp b/src/video_core/renderer_opengl/gl_driver.cpp index ceb018f32..63b05bd85 100644 --- a/src/video_core/renderer_opengl/gl_driver.cpp +++ b/src/video_core/renderer_opengl/gl_driver.cpp @@ -5,7 +5,6 @@ #include #include "common/assert.h" #include "common/settings.h" -#include "core/telemetry_session.h" #include "video_core/custom_textures/custom_format.h" #include "video_core/renderer_opengl/gl_driver.h" #include "video_core/renderer_opengl/gl_vars.h" @@ -70,12 +69,11 @@ static void APIENTRY DebugHandler(GLenum source, GLenum type, GLuint id, GLenum level = Common::Log::Level::Debug; break; } - LOG_GENERIC(Common::Log::Class::Render_OpenGL, level, "{} {} {}: {}", GetSource(source), GetType(type), id, message); } -Driver::Driver(Core::TelemetrySession& telemetry_session_) : telemetry_session{telemetry_session_} { +Driver::Driver() { const bool enable_debug = Settings::values.renderer_debug.GetValue(); if (enable_debug) { glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS); @@ -135,12 +133,6 @@ void Driver::ReportDriverInfo() { LOG_INFO(Render_OpenGL, "GL_VERSION: {}", gl_version); LOG_INFO(Render_OpenGL, "GL_VENDOR: {}", gpu_vendor); LOG_INFO(Render_OpenGL, "GL_RENDERER: {}", gpu_model); - - // Add the information to the telemetry system - constexpr auto user_system = Common::Telemetry::FieldType::UserSystem; - telemetry_session.AddField(user_system, "GPU_Vendor", std::string{gpu_vendor}); - telemetry_session.AddField(user_system, "GPU_Model", std::string{gpu_model}); - telemetry_session.AddField(user_system, "GPU_OpenGL_Version", std::string{gl_version}); } void Driver::DeduceGLES() { diff --git a/src/video_core/renderer_opengl/gl_driver.h b/src/video_core/renderer_opengl/gl_driver.h index 430469da7..2d67c3dc9 100644 --- a/src/video_core/renderer_opengl/gl_driver.h +++ b/src/video_core/renderer_opengl/gl_driver.h @@ -7,10 +7,6 @@ #include #include "common/common_types.h" -namespace Core { -class TelemetrySession; -} - namespace VideoCore { enum class CustomPixelFormat : u32; } @@ -48,7 +44,7 @@ enum class DriverBug { */ class Driver { public: - Driver(Core::TelemetrySession& telemetry_session); + Driver(); ~Driver(); /// Returns true of the driver has a particular bug stated in the DriverBug enum @@ -143,7 +139,6 @@ private: void FindBugs(); private: - Core::TelemetrySession& telemetry_session; Vendor vendor = Vendor::Unknown; DriverBug bugs{}; bool is_suitable{}; diff --git a/src/video_core/renderer_opengl/pica_to_gl.h b/src/video_core/renderer_opengl/pica_to_gl.h index fa9409465..162610c55 100644 --- a/src/video_core/renderer_opengl/pica_to_gl.h +++ b/src/video_core/renderer_opengl/pica_to_gl.h @@ -9,7 +9,6 @@ #include "common/assert.h" #include "common/logging/log.h" #include "core/core.h" -#include "core/telemetry_session.h" #include "video_core/pica/regs_framebuffer.h" #include "video_core/pica/regs_lighting.h" #include "video_core/pica/regs_texturing.h" @@ -76,9 +75,6 @@ inline GLenum WrapMode(Pica::TexturingRegs::TextureConfig::WrapMode mode) { } if (index > 3) { - Core::System::GetInstance().TelemetrySession().AddField( - Common::Telemetry::FieldType::Session, "VideoCore_Pica_UnsupportedTextureWrapMode", - static_cast(index)); LOG_WARNING(Render_OpenGL, "Using texture wrap mode {}", index); } diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index e9423fc6d..ce6cf5386 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp @@ -75,9 +75,9 @@ static std::array MakeOrthographicMatrix(const float width, cons RendererOpenGL::RendererOpenGL(Core::System& system, Pica::PicaCore& pica_, Frontend::EmuWindow& window, Frontend::EmuWindow* secondary_window) : VideoCore::RendererBase{system, window, secondary_window}, pica{pica_}, - driver{system.TelemetrySession()}, rasterizer{system.Memory(), pica, - system.CustomTexManager(), *this, driver}, - frame_dumper{system, window} { + rasterizer{system.Memory(), pica, system.CustomTexManager(), *this, driver}, frame_dumper{ + system, + window} { const bool has_debug_tool = driver.HasDebugTool(); window.mailbox = std::make_unique(has_debug_tool); if (secondary_window) { diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp index 40cc96f8d..f44b6172a 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp +++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp @@ -53,9 +53,9 @@ constexpr static std::array PRESENT_BINDINGS RendererVulkan::RendererVulkan(Core::System& system, Pica::PicaCore& pica_, Frontend::EmuWindow& window, Frontend::EmuWindow* secondary_window) : RendererBase{system, window, secondary_window}, memory{system.Memory()}, pica{pica_}, - instance{system.TelemetrySession(), window, Settings::values.physical_device.GetValue()}, - scheduler{instance}, renderpass_cache{instance, scheduler}, pool{instance}, - main_window{window, instance, scheduler}, + instance{window, Settings::values.physical_device.GetValue()}, scheduler{instance}, + renderpass_cache{instance, scheduler}, pool{instance}, main_window{window, instance, + scheduler}, vertex_buffer{instance, scheduler, vk::BufferUsageFlagBits::eVertexBuffer, VERTEX_BUFFER_SIZE}, rasterizer{memory, diff --git a/src/video_core/renderer_vulkan/vk_instance.cpp b/src/video_core/renderer_vulkan/vk_instance.cpp index c0e14e4a2..b4fde6a5c 100644 --- a/src/video_core/renderer_vulkan/vk_instance.cpp +++ b/src/video_core/renderer_vulkan/vk_instance.cpp @@ -9,7 +9,6 @@ #include "common/assert.h" #include "common/settings.h" #include "core/frontend/emu_window.h" -#include "core/telemetry_session.h" #include "video_core/custom_textures/custom_format.h" #include "video_core/renderer_vulkan/vk_instance.h" #include "video_core/renderer_vulkan/vk_platform.h" @@ -138,8 +137,7 @@ Instance::Instance(bool enable_validation, bool dump_command_buffers) enable_validation, dump_command_buffers)}, physical_devices{instance->enumeratePhysicalDevices()} {} -Instance::Instance(Core::TelemetrySession& telemetry, Frontend::EmuWindow& window, - u32 physical_device_index) +Instance::Instance(Frontend::EmuWindow& window, u32 physical_device_index) : library{OpenLibrary(&window)}, instance{CreateInstance( *library, window.GetWindowInfo().type, Settings::values.renderer_debug.GetValue(), @@ -161,10 +159,9 @@ Instance::Instance(Core::TelemetrySession& telemetry, Frontend::EmuWindow& windo VK_VERSION_MAJOR(properties.apiVersion), VK_VERSION_MINOR(properties.apiVersion))); } - CollectTelemetryParameters(telemetry); CreateDevice(); - CollectToolingInfo(); CreateFormatTable(); + CollectToolingInfo(); CreateCustomFormatTable(); CreateAttribTable(); } @@ -645,7 +642,10 @@ void Instance::CreateAllocator() { } } -void Instance::CollectTelemetryParameters(Core::TelemetrySession& telemetry) { +void Instance::CollectToolingInfo() { + if (!tooling_info) { + return; + } const vk::StructureChain property_chain = physical_device .getProperties2(); @@ -664,19 +664,6 @@ void Instance::CollectTelemetryParameters(Core::TelemetrySession& telemetry) { LOG_INFO(Render_Vulkan, "VK_DRIVER: {}", driver_name); LOG_INFO(Render_Vulkan, "VK_DEVICE: {}", model_name); LOG_INFO(Render_Vulkan, "VK_VERSION: {}", api_version); - - static constexpr auto field = Common::Telemetry::FieldType::UserSystem; - telemetry.AddField(field, "GPU_Vendor", vendor_name); - telemetry.AddField(field, "GPU_Model", model_name); - telemetry.AddField(field, "GPU_Vulkan_Driver", driver_name); - telemetry.AddField(field, "GPU_Vulkan_Version", api_version); - telemetry.AddField(field, "GPU_Vulkan_Extensions", extensions); -} - -void Instance::CollectToolingInfo() { - if (!tooling_info) { - return; - } const auto tools = physical_device.getToolPropertiesEXT(); for (const vk::PhysicalDeviceToolProperties& tool : tools) { const std::string_view name = tool.name; diff --git a/src/video_core/renderer_vulkan/vk_instance.h b/src/video_core/renderer_vulkan/vk_instance.h index 031aec73f..d087d49b1 100644 --- a/src/video_core/renderer_vulkan/vk_instance.h +++ b/src/video_core/renderer_vulkan/vk_instance.h @@ -10,10 +10,6 @@ #include "video_core/rasterizer_cache/pixel_format.h" #include "video_core/renderer_vulkan/vk_platform.h" -namespace Core { -class TelemetrySession; -} - namespace Frontend { class EmuWindow; } @@ -41,8 +37,7 @@ struct FormatTraits { class Instance { public: explicit Instance(bool validation = false, bool dump_command_buffers = false); - explicit Instance(Core::TelemetrySession& telemetry, Frontend::EmuWindow& window, - u32 physical_device_index); + explicit Instance(Frontend::EmuWindow& window, u32 physical_device_index); ~Instance(); /// Returns the FormatTraits struct for the provided pixel format @@ -290,8 +285,7 @@ private: /// Creates the VMA allocator handle void CreateAllocator(); - /// Collects telemetry information from the device. - void CollectTelemetryParameters(Core::TelemetrySession& telemetry); + // Collects logging gpu info void CollectToolingInfo(); private: @@ -334,4 +328,4 @@ private: bool has_renderdoc{}; }; -} // namespace Vulkan +} // namespace Vulkan \ No newline at end of file diff --git a/src/web_service/CMakeLists.txt b/src/web_service/CMakeLists.txt index c7f237425..7dabb7b45 100644 --- a/src/web_service/CMakeLists.txt +++ b/src/web_service/CMakeLists.txt @@ -2,8 +2,6 @@ add_library(web_service STATIC announce_room_json.cpp announce_room_json.h precompiled_headers.h - telemetry_json.cpp - telemetry_json.h verify_login.cpp verify_login.h verify_user_jwt.cpp diff --git a/src/web_service/telemetry_json.cpp b/src/web_service/telemetry_json.cpp deleted file mode 100644 index 97d19f696..000000000 --- a/src/web_service/telemetry_json.cpp +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2017 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#include -#include "common/detached_tasks.h" -#include "common/web_result.h" -#include "web_service/telemetry_json.h" -#include "web_service/web_backend.h" - -namespace WebService { - -namespace Telemetry = Common::Telemetry; - -struct TelemetryJson::Impl { - Impl(std::string host, std::string username, std::string token) - : host{std::move(host)}, username{std::move(username)}, token{std::move(token)} {} - - nlohmann::json& TopSection() { - return sections[static_cast(Telemetry::FieldType::None)]; - } - - const nlohmann::json& TopSection() const { - return sections[static_cast(Telemetry::FieldType::None)]; - } - - template - void Serialize(Telemetry::FieldType type, const std::string& name, T value) { - sections[static_cast(type)][name] = value; - } - - void SerializeSection(Telemetry::FieldType type, const std::string& name) { - TopSection()[name] = sections[static_cast(type)]; - } - - nlohmann::json output; - std::array sections; - std::string host; - std::string username; - std::string token; -}; - -TelemetryJson::TelemetryJson(std::string host, std::string username, std::string token) - : impl{std::make_unique(std::move(host), std::move(username), std::move(token))} {} -TelemetryJson::~TelemetryJson() = default; - -void TelemetryJson::Visit(const Telemetry::Field& field) { - impl->Serialize(field.GetType(), field.GetName(), field.GetValue()); -} - -void TelemetryJson::Visit(const Telemetry::Field& field) { - impl->Serialize(field.GetType(), field.GetName(), field.GetValue()); -} - -void TelemetryJson::Visit(const Telemetry::Field& field) { - impl->Serialize(field.GetType(), field.GetName(), field.GetValue()); -} - -void TelemetryJson::Visit(const Telemetry::Field& field) { - impl->Serialize(field.GetType(), field.GetName(), field.GetValue()); -} - -void TelemetryJson::Visit(const Telemetry::Field& field) { - impl->Serialize(field.GetType(), field.GetName(), field.GetValue()); -} - -void TelemetryJson::Visit(const Telemetry::Field& field) { - impl->Serialize(field.GetType(), field.GetName(), field.GetValue()); -} - -void TelemetryJson::Visit(const Telemetry::Field& field) { - impl->Serialize(field.GetType(), field.GetName(), field.GetValue()); -} - -void TelemetryJson::Visit(const Telemetry::Field& field) { - impl->Serialize(field.GetType(), field.GetName(), field.GetValue()); -} - -void TelemetryJson::Visit(const Telemetry::Field& field) { - impl->Serialize(field.GetType(), field.GetName(), field.GetValue()); -} - -void TelemetryJson::Visit(const Telemetry::Field& field) { - impl->Serialize(field.GetType(), field.GetName(), field.GetValue()); -} - -void TelemetryJson::Visit(const Telemetry::Field& field) { - impl->Serialize(field.GetType(), field.GetName(), field.GetValue()); -} - -void TelemetryJson::Visit(const Telemetry::Field& field) { - impl->Serialize(field.GetType(), field.GetName(), field.GetValue()); -} - -void TelemetryJson::Visit(const Telemetry::Field& field) { - impl->Serialize(field.GetType(), field.GetName(), std::string(field.GetValue())); -} - -void TelemetryJson::Visit(const Telemetry::Field& field) { - impl->Serialize(field.GetType(), field.GetName(), field.GetValue().count()); -} - -void TelemetryJson::Complete() { - impl->SerializeSection(Telemetry::FieldType::App, "App"); - impl->SerializeSection(Telemetry::FieldType::Session, "Session"); - impl->SerializeSection(Telemetry::FieldType::Performance, "Performance"); - impl->SerializeSection(Telemetry::FieldType::UserConfig, "UserConfig"); - impl->SerializeSection(Telemetry::FieldType::UserSystem, "UserSystem"); - - auto content = impl->TopSection().dump(); - // Send the telemetry async but don't handle the errors since they were written to the log - Common::DetachedTasks::AddTask([host{impl->host}, content]() { - Client{host, "", ""}.PostJson("/telemetry", content, true); - }); -} - -bool TelemetryJson::SubmitTestcase() { - impl->SerializeSection(Telemetry::FieldType::App, "App"); - impl->SerializeSection(Telemetry::FieldType::Session, "Session"); - impl->SerializeSection(Telemetry::FieldType::UserFeedback, "UserFeedback"); - impl->SerializeSection(Telemetry::FieldType::UserSystem, "UserSystem"); - - auto content = impl->TopSection().dump(); - Client client(impl->host, impl->username, impl->token); - auto value = client.PostJson("/gamedb/testcase", content, false); - - return value.result_code == Common::WebResult::Code::Success; -} - -} // namespace WebService diff --git a/src/web_service/telemetry_json.h b/src/web_service/telemetry_json.h deleted file mode 100644 index f2cb19840..000000000 --- a/src/web_service/telemetry_json.h +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2017 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#pragma once - -#include -#include -#include "common/announce_multiplayer_room.h" -#include "common/telemetry.h" - -namespace WebService { - -/** - * Implementation of VisitorInterface that serialized telemetry into JSON, and submits it to the - * Citra web service - */ -class TelemetryJson : public Common::Telemetry::VisitorInterface { -public: - TelemetryJson(std::string host, std::string username, std::string token); - ~TelemetryJson() override; - - void Visit(const Common::Telemetry::Field& field) override; - void Visit(const Common::Telemetry::Field& field) override; - void Visit(const Common::Telemetry::Field& field) override; - void Visit(const Common::Telemetry::Field& field) override; - void Visit(const Common::Telemetry::Field& field) override; - void Visit(const Common::Telemetry::Field& field) override; - void Visit(const Common::Telemetry::Field& field) override; - void Visit(const Common::Telemetry::Field& field) override; - void Visit(const Common::Telemetry::Field& field) override; - void Visit(const Common::Telemetry::Field& field) override; - void Visit(const Common::Telemetry::Field& field) override; - void Visit(const Common::Telemetry::Field& field) override; - void Visit(const Common::Telemetry::Field& field) override; - void Visit(const Common::Telemetry::Field& field) override; - - void Complete() override; - bool SubmitTestcase() override; - -private: - struct Impl; - std::unique_ptr impl; -}; - -} // namespace WebService