Merge branch 'master' into sam460ex
This commit is contained in:
+13
-5
@@ -36,8 +36,8 @@ SYSTEM_BIN = "[" addattr base64 basename bash beep cal cat catattr checkfs
|
|||||||
zmore znew
|
zmore znew
|
||||||
;
|
;
|
||||||
|
|
||||||
SYSTEM_APPS = AboutSystem DriveSetup Installer NetworkStatus ProcessController
|
SYSTEM_APPS = AboutSystem ActivityMonitor DriveSetup Installer NetworkStatus
|
||||||
StyledEdit Terminal
|
ProcessController StyledEdit Terminal
|
||||||
;
|
;
|
||||||
|
|
||||||
SYSTEM_PREFERENCES = Appearance Backgrounds <preference>Deskbar FileTypes
|
SYSTEM_PREFERENCES = Appearance Backgrounds <preference>Deskbar FileTypes
|
||||||
@@ -45,9 +45,9 @@ SYSTEM_PREFERENCES = Appearance Backgrounds <preference>Deskbar FileTypes
|
|||||||
<preference>Tracker VirtualMemory
|
<preference>Tracker VirtualMemory
|
||||||
;
|
;
|
||||||
|
|
||||||
SYSTEM_DEMOS = ;
|
SYSTEM_DEMOS = Sudoku ;
|
||||||
|
|
||||||
SYSTEM_LIBS = libbe.so libbnetapi.so libdebug.so libnetwork.so
|
SYSTEM_LIBS = libbe.so libbnetapi.so libdebug.so libmedia.so libnetwork.so
|
||||||
<revisioned>libroot.so libroot-addon-icu.so
|
<revisioned>libroot.so libroot-addon-icu.so
|
||||||
libtextencoding.so libtiff.so libtracker.so libtranslation.so
|
libtextencoding.so libtiff.so libtracker.so libtranslation.so
|
||||||
$(HAIKU_SHARED_LIBSTDC++) $(HAIKU_SHARED_LIBSUPC++)
|
$(HAIKU_SHARED_LIBSTDC++) $(HAIKU_SHARED_LIBSUPC++)
|
||||||
@@ -195,7 +195,8 @@ AddDirectoryToHaikuImage home mail out ;
|
|||||||
AddSymlinkToHaikuImage home config : settings/deskbar : be ;
|
AddSymlinkToHaikuImage home config : settings/deskbar : be ;
|
||||||
# Deskbar Application links
|
# Deskbar Application links
|
||||||
AddDirectoryToHaikuImage home config settings deskbar Applications ;
|
AddDirectoryToHaikuImage home config settings deskbar Applications ;
|
||||||
DESKBAR_APPLICATIONS = DriveSetup Installer StyledEdit Terminal ;
|
DESKBAR_APPLICATIONS = ActivityMonitor DriveSetup Installer StyledEdit
|
||||||
|
Terminal ;
|
||||||
local linkTarget ;
|
local linkTarget ;
|
||||||
for linkTarget in $(DESKBAR_APPLICATIONS) {
|
for linkTarget in $(DESKBAR_APPLICATIONS) {
|
||||||
AddSymlinkToHaikuImage home config settings deskbar Applications
|
AddSymlinkToHaikuImage home config settings deskbar Applications
|
||||||
@@ -219,6 +220,13 @@ for linkTarget in $(DESKBAR_PREFERENCES) {
|
|||||||
: $(linkTarget) ;
|
: $(linkTarget) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Deskbar Demo links
|
||||||
|
AddDirectoryToHaikuImage home config settings deskbar Demos ;
|
||||||
|
for linkTarget in $(SYSTEM_DEMOS) {
|
||||||
|
AddSymlinkToHaikuImage home config settings deskbar Demos
|
||||||
|
: /boot/system/demos/$(linkTarget) : $(linkTarget) ;
|
||||||
|
}
|
||||||
|
|
||||||
AddSymlinkToHaikuImage system bin : less : more ;
|
AddSymlinkToHaikuImage system bin : less : more ;
|
||||||
AddSymlinkToHaikuImage system bin : gzip : gunzip ;
|
AddSymlinkToHaikuImage system bin : gzip : gunzip ;
|
||||||
AddSymlinkToHaikuImage system bin : gzip : zcat ;
|
AddSymlinkToHaikuImage system bin : gzip : zcat ;
|
||||||
|
|||||||
@@ -1,21 +1,21 @@
|
|||||||
1 portuguese (brazil) x-vnd.Haiku-DiskProbe 2306672993
|
1 portuguese (brazil) x-vnd.Haiku-DiskProbe 2306672993
|
||||||
File offset: ProbeView Offset do arquivo
|
File offset: ProbeView Offset do arquivo:
|
||||||
%ld (native) ProbeView %ld (nativo)
|
%ld (native) ProbeView %ld (nativo)
|
||||||
64 bit unsigned value: TypeEditors Valor não assinado de 64 bit
|
64 bit unsigned value: TypeEditors Valor não assinado de 64 bit
|
||||||
Find again ProbeView Localizar de novo
|
Find again ProbeView Localizar de novo
|
||||||
Text FindWindow Texto
|
Text FindWindow Texto
|
||||||
Find… ProbeView Localizar...
|
Find… ProbeView Localizar...
|
||||||
Case sensitive FindWindow Caso sensitivo
|
Case sensitive FindWindow Diferenciar maiúsculas e minúsculas
|
||||||
Cancel OpenWindow Cancelar
|
Cancel OpenWindow Cancelar
|
||||||
Close AttributeWindow Fechar
|
Close AttributeWindow Fechar
|
||||||
File ProbeView Arquivo
|
File ProbeView Arquivo
|
||||||
Attribute ProbeView Atributo
|
Attribute ProbeView Atributo
|
||||||
Floating-point value: TypeEditors Valor de ponto flutuante
|
Floating-point value: TypeEditors Valor de ponto flutuante:
|
||||||
16 bit TypeEditors 16 bit
|
16 bit TypeEditors 16 bit
|
||||||
Attributes ProbeView Atributos
|
Attributes ProbeView Atributos
|
||||||
Device offset: ProbeView Offset do dispositivo:
|
Device offset: ProbeView Offset do dispositivo:
|
||||||
Selection ProbeView Seleção
|
Selection ProbeView Seleção
|
||||||
DiskProbe System name DiskProbe
|
DiskProbe System name Analisador de Disco
|
||||||
what: '%.4s'\n\n TypeEditors 'What' is a message specifier that defines the type of the message. O que é: '%.4s'\n\n
|
what: '%.4s'\n\n TypeEditors 'What' is a message specifier that defines the type of the message. O que é: '%.4s'\n\n
|
||||||
File FileWindow Arquivo
|
File FileWindow Arquivo
|
||||||
OK DiskProbe OK
|
OK DiskProbe OK
|
||||||
@@ -25,56 +25,56 @@ PNG format TypeEditors Formato PNG
|
|||||||
Font size ProbeView Tamanho da fonte
|
Font size ProbeView Tamanho da fonte
|
||||||
Attribute type: ProbeView Tipo de atributo:
|
Attribute type: ProbeView Tipo de atributo:
|
||||||
Attribute AttributeWindow Atributo
|
Attribute AttributeWindow Atributo
|
||||||
8 bit signed value: TypeEditors Valor assinado de 8 bit
|
8 bit signed value: TypeEditors valor assinado de 8 bit:
|
||||||
Number: TypeEditors Número:
|
Number: TypeEditors Número:
|
||||||
Save ProbeView Salvar
|
Save ProbeView Salvar
|
||||||
Stop ProbeView Parar
|
Stop ProbeView Parar
|
||||||
Number editor TypeEditors Editor de número
|
Number editor TypeEditors Editor de número
|
||||||
Hex ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Hexa
|
Hex ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Hexa
|
||||||
No type editor available AttributeWindow Nenhum editor de tipo disponível
|
No type editor available AttributeWindow Nenhum editor de tipo disponível
|
||||||
Double precision floating-point value: TypeEditors Valor de ponto flutuante de dupla precisão
|
Double precision floating-point value: TypeEditors Valor de ponto flutuante de precisão dupla:
|
||||||
Device: ProbeView Dispositivo
|
Device: ProbeView Dispositivo:
|
||||||
Do you really want to remove the attribute \"%s\" from the file \"%s\"?\n\nYou cannot undo this action. AttributeWindow Você realmente quer remover o atributo \"%s\" do arquivo \"%s\"?\n\nVocê não pode desfazer essa ação.
|
Do you really want to remove the attribute \"%s\" from the file \"%s\"?\n\nYou cannot undo this action. AttributeWindow Você realmente quer remover o atributo \"%s\" do arquivo \"%s\"?\n\nVocê não pode desfazer essa ação.
|
||||||
Text TypeEditors This is the type of editor Texto
|
Text TypeEditors This is the type of editor Texto
|
||||||
8 bit unsigned value: TypeEditors Valor não assinado de 8 bit
|
8 bit unsigned value: TypeEditors valor não assinado de 8 bit:
|
||||||
Block ProbeView Bloquear
|
Block ProbeView Bloco
|
||||||
Back ProbeView Voltar
|
Back ProbeView Voltar
|
||||||
Device ProbeView Dispositivo
|
Device ProbeView Dispositivo
|
||||||
Unknown type TypeEditors Tipo desconhecido
|
Unknown type TypeEditors Tipo desconhecido
|
||||||
Block 0x%Lx ProbeView Bloquear 0x%Lx
|
Block 0x%Lx ProbeView Bloco 0x%Lx
|
||||||
Quit FileWindow Sair
|
Quit FileWindow Sair
|
||||||
Undo ProbeView Desfazer
|
Undo ProbeView Desfazer
|
||||||
Close ProbeView Fechar
|
Close ProbeView Fechar
|
||||||
Number TypeEditors This is the type of editor Número
|
Number TypeEditors This is the type of editor Número
|
||||||
Decimal ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Decimal
|
Decimal ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Decimal
|
||||||
16 bit signed value: TypeEditors Valor assinado de 16 bit
|
16 bit signed value: TypeEditors valor assinado de 16 bit:
|
||||||
String editor TypeEditors Editor de expressões
|
String editor TypeEditors Editor de expressões
|
||||||
of 0x0 ProbeView This is a part of 'Block 0xXXXX of 0x0026' message. In languages without 'of' structure it can be replaced simply with '/'. de 0x0
|
of 0x0 ProbeView This is a part of 'Block 0xXXXX of 0x0026' message. In languages without 'of' structure it can be replaced simply with '/'. de 0x0
|
||||||
64 bit signed offset: TypeEditors Offset assinado de 64 bit
|
64 bit signed offset: TypeEditors offset assinado de 64 bit:
|
||||||
Boolean editor TypeEditors Editor booleano
|
Boolean editor TypeEditors Editor booleano
|
||||||
Copy ProbeView Copiar
|
Copy ProbeView Copiar
|
||||||
none ProbeView No attributes nenhum
|
none ProbeView No attributes nenhum
|
||||||
Boolean value: TypeEditors Valor Booleano:
|
Boolean value: TypeEditors Valor booleano:
|
||||||
32 bit size or status: TypeEditors Tamanho de 32 bit ou status:
|
32 bit size or status: TypeEditors Tamanho de 32 bit ou status:
|
||||||
8 bit palette TypeEditors Paleta de 8 bit
|
8 bit palette TypeEditors Paleta de 8 bit
|
||||||
Fit ProbeView Size of fonts, fits to available room Caber
|
Fit ProbeView Size of fonts, fits to available room Caber
|
||||||
Probe device OpenWindow Sondar dispositivo
|
Probe device OpenWindow Analisar dispositivo
|
||||||
(native) ProbeView (nativo)
|
(native) ProbeView (nativo)
|
||||||
Unknown format TypeEditors Formato desconhecido
|
Unknown format TypeEditors Formato desconhecido
|
||||||
Hexadecimal FindWindow A menu item, as short as possible, noun is recommended if it is shorter than adjective. Hexadecimal
|
Hexadecimal FindWindow A menu item, as short as possible, noun is recommended if it is shorter than adjective. Hexadecimal
|
||||||
MIME type: TypeEditors Tipo MIME:
|
MIME type: TypeEditors Tipo MIME:
|
||||||
Page setup… ProbeView Configurar página...
|
Page setup… ProbeView Configurar página...
|
||||||
New… FileWindow Novo...
|
New… FileWindow Novo...
|
||||||
DiskProbe request AttributeWindow Requerimento de Sondagem do Disco
|
DiskProbe request AttributeWindow Solicitação do Analisador de Disco
|
||||||
Could not read image TypeEditors Image means here a picture file, not a disk image. Não foi possível ler a imagem
|
Could not read image TypeEditors Image means here a picture file, not a disk image. Não foi possível ler a imagem
|
||||||
BlockSize ProbeView A menu item, a shortened form from 'block size'. This is in the same menu windowthan 'Base' and 'Font size' BlockSize
|
BlockSize ProbeView A menu item, a shortened form from 'block size'. This is in the same menu windowthan 'Base' and 'Font size' Tamanho do bloco
|
||||||
Save changes before closing? ProbeView Salvar alterações antes de fechar
|
Save changes before closing? ProbeView Salvar alterações antes de fechar?
|
||||||
Type editor AttributeWindow Editor de tipo
|
Type editor AttributeWindow Editor de tipo
|
||||||
Native: 0x%0*Lx ProbeView Nativo: 0x%0*Lx
|
Native: 0x%0*Lx ProbeView Nativo: 0x%0*Lx
|
||||||
Raw editor AttributeWindow Editor em bruto
|
Raw editor AttributeWindow Editor em bruto
|
||||||
Message View TypeEditors Visualização de Mensagem
|
Message View TypeEditors Visualização de Mensagem
|
||||||
DiskProbe request ProbeView Requerimento de Sondagem do Disco
|
DiskProbe request ProbeView Solicitação do Analisador de Disco
|
||||||
32 bit unsigned size: TypeEditors Tamanho não assinado de 32 bits
|
32 bit unsigned size: TypeEditors tamanho não assinado de 32 bits:
|
||||||
Flattened bitmap TypeEditors Mapa de bits achatado
|
Flattened bitmap TypeEditors Mapa de bits achatado
|
||||||
Open file… FileWindow Abrir arquivo…
|
Open file… FileWindow Abrir arquivo…
|
||||||
Next ProbeView Próximo
|
Next ProbeView Próximo
|
||||||
@@ -83,7 +83,7 @@ Attribute: ProbeView Atributo:
|
|||||||
Remove from file AttributeWindow Remover do arquivo
|
Remove from file AttributeWindow Remover do arquivo
|
||||||
Don't save ProbeView Não salvar
|
Don't save ProbeView Não salvar
|
||||||
Previous ProbeView Anterior
|
Previous ProbeView Anterior
|
||||||
64 bit signed value: TypeEditors Valor assinado de 64 bit:
|
64 bit signed value: TypeEditors valor assinado de 64 bit:
|
||||||
Icon TypeEditors Ícone
|
Icon TypeEditors Ícone
|
||||||
Block: ProbeView Bloco:
|
Block: ProbeView Bloco:
|
||||||
Examine device: OpenWindow Examinar dispositivo:
|
Examine device: OpenWindow Examinar dispositivo:
|
||||||
@@ -104,7 +104,7 @@ Swapped: %Ld (0x%0*Lx) ProbeView Trocado: %Ld (0x%0*Lx)
|
|||||||
Find FindWindow Localizar
|
Find FindWindow Localizar
|
||||||
Remove AttributeWindow Remover
|
Remove AttributeWindow Remover
|
||||||
Print… ProbeView Imprimir…
|
Print… ProbeView Imprimir…
|
||||||
Block %Ld (0x%Lx) ProbeView Bloquear %Ld (0x%Lx)
|
Block %Ld (0x%Lx) ProbeView Bloco %Ld (0x%Lx)
|
||||||
Image TypeEditors This is the type of view Imagem
|
Image TypeEditors This is the type of view Imagem
|
||||||
Could not open file \"%s\": %s\n DiskProbe Não foi possível abrir o arquivo \"%s\": %s\n
|
Could not open file \"%s\": %s\n DiskProbe Não foi possível abrir o arquivo \"%s\": %s\n
|
||||||
Select all ProbeView Selecionar tudo
|
Select all ProbeView Selecionar tudo
|
||||||
@@ -115,12 +115,12 @@ Mode: FindWindow Modo:
|
|||||||
15 bit TypeEditors 15 bits
|
15 bit TypeEditors 15 bits
|
||||||
Open device FileWindow Abrir dispositivo
|
Open device FileWindow Abrir dispositivo
|
||||||
Could not find search string. ProbeView Não foi possível encontrar expressão de pesquisa.
|
Could not find search string. ProbeView Não foi possível encontrar expressão de pesquisa.
|
||||||
16 bit unsigned value: TypeEditors Valor não assinado de 16 bits
|
16 bit unsigned value: TypeEditors valor não assinado de 16 bits:
|
||||||
Attribute offset: ProbeView Compensação de atributo:
|
Attribute offset: ProbeView Compensação de atributo:
|
||||||
View ProbeView This is the last menubar item 'File Edit Block View' Ver
|
View ProbeView This is the last menubar item 'File Edit Block View' Ver
|
||||||
Redo ProbeView Refazer
|
Redo ProbeView Refazer
|
||||||
File: ProbeView Arquivo:
|
File: ProbeView Arquivo:
|
||||||
32 bit unsigned pointer: TypeEditors Ponteiro não assinado de 32 bits
|
32 bit unsigned pointer: TypeEditors ponteiro não assinado de 32 bits:
|
||||||
of ProbeView de
|
of ProbeView de
|
||||||
Writing to the file failed:\n%s\n\nAll changes will be lost when you quit. ProbeView Gravaçao para o arquivo falhou:\n%s\n\nTodas as alterações serão perdidas quando sair.
|
Writing to the file failed:\n%s\n\nAll changes will be lost when you quit. ProbeView Gravaçao para o arquivo falhou:\n%s\n\nTodas as alterações serão perdidas quando sair.
|
||||||
32 bit TypeEditors 32 bits
|
32 bit TypeEditors 32 bits
|
||||||
@@ -128,6 +128,6 @@ Cancel ProbeView Cancelar
|
|||||||
Swapped: 0x%0*Lx ProbeView Trocado: 0x%0*Lx
|
Swapped: 0x%0*Lx ProbeView Trocado: 0x%0*Lx
|
||||||
Grayscale TypeEditors Escala de cinza
|
Grayscale TypeEditors Escala de cinza
|
||||||
32 bit signed value: TypeEditors Valor assinado de 32 bits
|
32 bit signed value: TypeEditors Valor assinado de 32 bits
|
||||||
DiskProbe request DiskProbe Requerimento de Sondagem do Disco
|
DiskProbe request DiskProbe Solicitação do Analisador de Disco
|
||||||
Type editor ProbeView Editor de tipo
|
Type editor ProbeView Editor de tipo
|
||||||
Contents: TypeEditors Conteúdo:
|
Contents: TypeEditors Conteúdo:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
1 german x-vnd.Haiku-DiskUsage 1726021626
|
1 german x-vnd.Haiku-DiskUsage 3848101922
|
||||||
Scanning %refName% Scanner Analysiere %refName%
|
Scanning %refName% Scanner Analysiere %refName%
|
||||||
Size Info Window Größe
|
Size Info Window Größe
|
||||||
Rescan Pie View Erneut analysieren
|
Rescan Pie View Erneut analysieren
|
||||||
@@ -9,6 +9,7 @@ no supporting apps Pie View keine geeigneten Anwendungen
|
|||||||
Path Info Window Pfad
|
Path Info Window Pfad
|
||||||
Scan Status View Analyse
|
Scan Status View Analyse
|
||||||
9999.99 GB Status View 9999,99 GiB
|
9999.99 GB Status View 9999,99 GiB
|
||||||
|
Rescan Status View Erneut analysieren
|
||||||
file unavailable Status View Datei nicht verfügbar
|
file unavailable Status View Datei nicht verfügbar
|
||||||
Get Info Pie View Datei-Info
|
Get Info Pie View Datei-Info
|
||||||
DiskUsage System name Datenträgerbelegung
|
DiskUsage System name Datenträgerbelegung
|
||||||
@@ -16,6 +17,7 @@ DiskUsage System name Datenträgerbelegung
|
|||||||
%d files Status View %d Dateien
|
%d files Status View %d Dateien
|
||||||
Created Info Window Erstellt
|
Created Info Window Erstellt
|
||||||
Modified Info Window Geändert
|
Modified Info Window Geändert
|
||||||
|
Abort Status View Abbrechen
|
||||||
Open Pie View Öffnen
|
Open Pie View Öffnen
|
||||||
Open With Pie View Öffnen mit
|
Open With Pie View Öffnen mit
|
||||||
%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r
|
%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
1 hungarian x-vnd.Haiku-DiskUsage 1726021626
|
1 hungarian x-vnd.Haiku-DiskUsage 3848101922
|
||||||
Scanning %refName% Scanner %refName% elemzése
|
Scanning %refName% Scanner %refName% elemzése
|
||||||
Size Info Window Méret
|
Size Info Window Méret
|
||||||
Rescan Pie View Újraelemzés
|
Rescan Pie View Újraelemzés
|
||||||
@@ -9,6 +9,7 @@ no supporting apps Pie View nincs használható program
|
|||||||
Path Info Window Útvonal
|
Path Info Window Útvonal
|
||||||
Scan Status View Elemzés
|
Scan Status View Elemzés
|
||||||
9999.99 GB Status View 9999,99 GB
|
9999.99 GB Status View 9999,99 GB
|
||||||
|
Rescan Status View Újraelemzés
|
||||||
file unavailable Status View fájl nem elérhető
|
file unavailable Status View fájl nem elérhető
|
||||||
Get Info Pie View Információ
|
Get Info Pie View Információ
|
||||||
DiskUsage System name Lemezhasználat
|
DiskUsage System name Lemezhasználat
|
||||||
@@ -16,6 +17,7 @@ DiskUsage System name Lemezhasználat
|
|||||||
%d files Status View %d fájl
|
%d files Status View %d fájl
|
||||||
Created Info Window Létrehozva
|
Created Info Window Létrehozva
|
||||||
Modified Info Window Módosítva
|
Modified Info Window Módosítva
|
||||||
|
Abort Status View Megszakítás
|
||||||
Open Pie View Megnyitás
|
Open Pie View Megnyitás
|
||||||
Open With Pie View Megnyitás ezzel
|
Open With Pie View Megnyitás ezzel
|
||||||
%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r
|
%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
1 japanese x-vnd.Haiku-DiskUsage 1726021626
|
1 japanese x-vnd.Haiku-DiskUsage 3848101922
|
||||||
Scanning %refName% Scanner %refName%をスキャン中
|
Scanning %refName% Scanner %refName%をスキャン中
|
||||||
Size Info Window サイズ
|
Size Info Window サイズ
|
||||||
Rescan Pie View 再スキャン
|
Rescan Pie View 再スキャン
|
||||||
@@ -9,6 +9,7 @@ no supporting apps Pie View 対象アプリケーション無し
|
|||||||
Path Info Window パス
|
Path Info Window パス
|
||||||
Scan Status View スキャン
|
Scan Status View スキャン
|
||||||
9999.99 GB Status View 9999.99 GB
|
9999.99 GB Status View 9999.99 GB
|
||||||
|
Rescan Status View 再スキャン
|
||||||
file unavailable Status View 利用できないファイル
|
file unavailable Status View 利用できないファイル
|
||||||
Get Info Pie View 情報を表示
|
Get Info Pie View 情報を表示
|
||||||
DiskUsage System name DiskUsage
|
DiskUsage System name DiskUsage
|
||||||
@@ -16,6 +17,7 @@ DiskUsage System name DiskUsage
|
|||||||
%d files Status View %d 個のファイル
|
%d files Status View %d 個のファイル
|
||||||
Created Info Window 作成日時
|
Created Info Window 作成日時
|
||||||
Modified Info Window 更新日時
|
Modified Info Window 更新日時
|
||||||
|
Abort Status View 中断
|
||||||
Open Pie View 開く
|
Open Pie View 開く
|
||||||
Open With Pie View アプリケーションで開く
|
Open With Pie View アプリケーションで開く
|
||||||
%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r
|
%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
1 portuguese (brazil) x-vnd.Haiku-DiskUsage 1726021626
|
1 portuguese (brazil) x-vnd.Haiku-DiskUsage 3848101922
|
||||||
Scanning %refName% Scanner Analisando %refName%
|
Scanning %refName% Scanner Analisando %refName%
|
||||||
Size Info Window Tamanho
|
Size Info Window Tamanho
|
||||||
Rescan Pie View ReAnalisar
|
Rescan Pie View ReAnalisar
|
||||||
@@ -9,6 +9,7 @@ no supporting apps Pie View sem suporte a apps
|
|||||||
Path Info Window Caminho
|
Path Info Window Caminho
|
||||||
Scan Status View Analisar
|
Scan Status View Analisar
|
||||||
9999.99 GB Status View 9999.99 Gb
|
9999.99 GB Status View 9999.99 Gb
|
||||||
|
Rescan Status View ReAnalisar
|
||||||
file unavailable Status View arquivo não disponível
|
file unavailable Status View arquivo não disponível
|
||||||
Get Info Pie View Obter Informação
|
Get Info Pie View Obter Informação
|
||||||
DiskUsage System name Uso de Disco
|
DiskUsage System name Uso de Disco
|
||||||
@@ -16,6 +17,7 @@ DiskUsage System name Uso de Disco
|
|||||||
%d files Status View %d arquivos
|
%d files Status View %d arquivos
|
||||||
Created Info Window Criado
|
Created Info Window Criado
|
||||||
Modified Info Window Modificado
|
Modified Info Window Modificado
|
||||||
|
Abort Status View Cancelar
|
||||||
Open Pie View Abrir
|
Open Pie View Abrir
|
||||||
Open With Pie View Abrir Com
|
Open With Pie View Abrir Com
|
||||||
%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r
|
%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
1 swedish x-vnd.Haiku-DiskUsage 1726021626
|
1 swedish x-vnd.Haiku-DiskUsage 3848101922
|
||||||
Scanning %refName% Scanner Skannar %refName%
|
Scanning %refName% Scanner Skannar %refName%
|
||||||
Size Info Window Storlek
|
Size Info Window Storlek
|
||||||
Rescan Pie View Skanna om
|
Rescan Pie View Skanna om
|
||||||
@@ -9,6 +9,7 @@ no supporting apps Pie View applikationsstöd saknas
|
|||||||
Path Info Window Sökväg
|
Path Info Window Sökväg
|
||||||
Scan Status View Skanna
|
Scan Status View Skanna
|
||||||
9999.99 GB Status View 9999.99 GB
|
9999.99 GB Status View 9999.99 GB
|
||||||
|
Rescan Status View Skanna om
|
||||||
file unavailable Status View fil ej tillgänglig
|
file unavailable Status View fil ej tillgänglig
|
||||||
Get Info Pie View Visa information
|
Get Info Pie View Visa information
|
||||||
DiskUsage System name DiskAnvändning
|
DiskUsage System name DiskAnvändning
|
||||||
@@ -16,6 +17,7 @@ DiskUsage System name DiskAnvändning
|
|||||||
%d files Status View %d filer
|
%d files Status View %d filer
|
||||||
Created Info Window Skapad
|
Created Info Window Skapad
|
||||||
Modified Info Window Modifierad
|
Modified Info Window Modifierad
|
||||||
|
Abort Status View Avbryt
|
||||||
Open Pie View Öppna
|
Open Pie View Öppna
|
||||||
Open With Pie View Öppna med
|
Open With Pie View Öppna med
|
||||||
%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r
|
%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
1 swedish x-vnd.Haiku-Installer 303957964
|
1 swedish x-vnd.Haiku-Installer 3015727137
|
||||||
So behind the other menu entries towards the bottom of the file, add something similar to these lines:\n\n InstallerApp Efter de andra menyposterna mot slutet av filen, lägg till något som liknar dessa rader:\n\n
|
So behind the other menu entries towards the bottom of the file, add something similar to these lines:\n\n InstallerApp Efter de andra menyposterna mot slutet av filen, lägg till något som liknar dessa rader:\n\n
|
||||||
Are you sure you want to abort the installation and restart the system? InstallerWindow Är du säker på att du vill avbryta installationen och starta om systemet
|
Are you sure you want to abort the installation and restart the system? InstallerWindow Är du säker på att du vill avbryta installationen och starta om systemet
|
||||||
\t}\n\n InstallerApp \t}\n\n
|
\t}\n\n InstallerApp \t}\n\n
|
||||||
@@ -101,12 +101,20 @@ DriveSetup, the application to configure disk partitions, could not be launched.
|
|||||||
No optional packages available. PackagesView Inga installationspaket fanns att välja.
|
No optional packages available. PackagesView Inga installationspaket fanns att välja.
|
||||||
All hard disks start with \"hd\".\n InstallerApp Alla hårdiskar startar med \"hd\".\n
|
All hard disks start with \"hd\".\n InstallerApp Alla hårdiskar startar med \"hd\".\n
|
||||||
Continue InstallerApp Fortsätt
|
Continue InstallerApp Fortsätt
|
||||||
|
BootManager, the application to configure the Haiku boot menu, could not be launched. InstallerWindow BootManager, applikationen för att configurera Haiku boot meny kunde inte startas.
|
||||||
|
Configure your /boot/grub/menu.lst by launching your favorite editor from a Terminal like this:\n\n InstallerApp Konfigurera /boot/grub/menu.lst genom att köra din favorit editor från Terminalen så här:\n\n
|
||||||
|
Boot sector not written because of an internal error. InstallProgress Gick inte att skriva till bootsektorn på grund av ett internt fel.
|
||||||
Additional disk space required: %s InstallerWindow Ytterligare diskutrymme behövs: %s
|
Additional disk space required: %s InstallerWindow Ytterligare diskutrymme behövs: %s
|
||||||
|
NOTE: While the naming strategy for hard disks is still as described under 2.1) the naming scheme for partitions has changed.\n\n InstallerApp NOITERA: Trots att namngivningen för hårddiskar fortfarande är som det beskrivs under 2.1) så har namngivningen för partitioner ändrats.\n\n
|
||||||
Cancel InstallProgress Avbryt
|
Cancel InstallProgress Avbryt
|
||||||
|
Running Boot Manager and DriveSetup…\n\nClose both applications to continue with the installation. InstallerWindow Kör Boot Manager och DriveSetup…\n\nStäng båda programmen för att fortsätta med installationen.
|
||||||
Try installing anyway InstallProgress Försök installera iallafall
|
Try installing anyway InstallProgress Försök installera iallafall
|
||||||
Are you sure you want to to stop the installation? InstallerWindow Är du säker på att du vill stoppa installationen?
|
Are you sure you want to to stop the installation? InstallerWindow Är du säker på att du vill stoppa installationen?
|
||||||
Onto: InstallerWindow På:
|
Onto: InstallerWindow På:
|
||||||
|
Please close the Boot Manager window before closing the Installer window. InstallerWindow Stäng Boot Manager fönstret före du stänger installatione fönstret.
|
||||||
|
3) When you successfully boot into Haiku for the first time, make sure to read our \"Welcome\" and \"Userguide\" documentation. There are links on the Desktop and in WebPositive's bookmarks.\n\n InstallerApp 3) När du har startat Haiku första gången. Läs gärna våra dokument \"Välkommen\" och \"Användarguid\". Det finns länkar på skrivbordet och i WebPositive's bokmärken.\n\n
|
||||||
Tools InstallerWindow Verktyg
|
Tools InstallerWindow Verktyg
|
||||||
The mount point could not be retrieved. InstallProgress Monteringspunkt kunde inte läsas av.
|
The mount point could not be retrieved. InstallProgress Monteringspunkt kunde inte läsas av.
|
||||||
|
You can see the correct partition in GParted for example.\n\n\n InstallerApp Du kan se de rätta partionerna i tex GParted.\n\n\n
|
||||||
\ttitle\t\t\t\tHaiku\n InstallerApp \t titel\t \t \t \t Haiku\n
|
\ttitle\t\t\t\tHaiku\n InstallerApp \t titel\t \t \t \t Haiku\n
|
||||||
\tsudo <your favorite text editor> /etc/grub.d/40_custom\n\n InstallerApp \t sudo <valfri textredigerare> /etc/grub.d/40_custom\n\n
|
\tsudo <your favorite text editor> /etc/grub.d/40_custom\n\n InstallerApp \t sudo <valfri textredigerare> /etc/grub.d/40_custom\n\n
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
1 german x-vnd.Haiku-Terminal 1294209621
|
1 german x-vnd.Haiku-Terminal 211651840
|
||||||
Not found. Terminal TermWindow Nicht gefunden.
|
Not found. Terminal TermWindow Nicht gefunden.
|
||||||
Switch Terminals Terminal TermWindow Terminals wechseln
|
Switch Terminals Terminal TermWindow Terminals wechseln
|
||||||
Change directory Terminal TermView Zum Ordner wechseln
|
Change directory Terminal TermView Zum Ordner wechseln
|
||||||
@@ -50,6 +50,7 @@ The following processes are still running:\n\n\t%1\n\nIf you close the Terminal,
|
|||||||
Insert path Terminal TermView Pfad einfügen
|
Insert path Terminal TermView Pfad einfügen
|
||||||
Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui und Takashi Murai.\n\nGebrauch: %s [OPTION] [SHELL]\n
|
Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui und Takashi Murai.\n\nGebrauch: %s [OPTION] [SHELL]\n
|
||||||
No search string was entered. Terminal TermWindow Es wurde kein Suchbegriff eingegeben.
|
No search string was entered. Terminal TermWindow Es wurde kein Suchbegriff eingegeben.
|
||||||
|
Blinking cursor Terminal AppearancePrefView Blinkender Cursor
|
||||||
Don't save Terminal PrefWindow Verwerfen
|
Don't save Terminal PrefWindow Verwerfen
|
||||||
Set window title Terminal TermWindow Setze Fenstertitel
|
Set window title Terminal TermWindow Setze Fenstertitel
|
||||||
Terminal System name Terminal
|
Terminal System name Terminal
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
1 hungarian x-vnd.Haiku-Terminal 1294209621
|
1 hungarian x-vnd.Haiku-Terminal 3929743651
|
||||||
Not found. Terminal TermWindow Nem található.
|
Not found. Terminal TermWindow Nem található.
|
||||||
Switch Terminals Terminal TermWindow Terminálok közti váltás
|
Switch Terminals Terminal TermWindow Terminálok közti váltás
|
||||||
Change directory Terminal TermView Mappa váltása
|
Change directory Terminal TermView Mappa váltása
|
||||||
OK Terminal TermWindow Rendben
|
OK Terminal TermWindow Rendben
|
||||||
New Terminal Terminal TermWindow Új terminál
|
New Terminal Terminal TermWindow Új terminál
|
||||||
|
Cursor text Terminal AppearancePrefView Kurzor szöveg
|
||||||
Terminal couldn't start the shell. Sorry. Terminal TermApp Sajnos, a terminálnak nem sikerült elindítani a shellt.
|
Terminal couldn't start the shell. Sorry. Terminal TermApp Sajnos, a terminálnak nem sikerült elindítani a shellt.
|
||||||
Text size Terminal TermWindow Betűméret
|
Text size Terminal TermWindow Betűméret
|
||||||
Match case Terminal FindWindow Betűérzékeny
|
Match case Terminal FindWindow Betűérzékeny
|
||||||
@@ -50,6 +51,7 @@ The following processes are still running:\n\n\t%1\n\nIf you close the Terminal,
|
|||||||
Insert path Terminal TermView Útvonal beszúrása
|
Insert path Terminal TermView Útvonal beszúrása
|
||||||
Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Haiku Terminál\nMinden jog fenntartva 2001-2009 Haiku, Inc.\nMinden jog fenntartva(C) 1999 Kazuho Okui és Takashi Murai.\n\nHasználata: %s [OPCIÓ] [SHELL]\n
|
Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Haiku Terminál\nMinden jog fenntartva 2001-2009 Haiku, Inc.\nMinden jog fenntartva(C) 1999 Kazuho Okui és Takashi Murai.\n\nHasználata: %s [OPCIÓ] [SHELL]\n
|
||||||
No search string was entered. Terminal TermWindow Nincs beírva keresendő szöveg
|
No search string was entered. Terminal TermWindow Nincs beírva keresendő szöveg
|
||||||
|
Blinking cursor Terminal AppearancePrefView Villogó kurzor
|
||||||
Don't save Terminal PrefWindow Nincs mentés
|
Don't save Terminal PrefWindow Nincs mentés
|
||||||
Set window title Terminal TermWindow Ablak címének beállítása
|
Set window title Terminal TermWindow Ablak címének beállítása
|
||||||
Terminal System name Terminál
|
Terminal System name Terminál
|
||||||
@@ -79,6 +81,7 @@ Set tab title Terminal TermWindow Lap címének beállítása
|
|||||||
Settings… Terminal TermWindow Beállítások…
|
Settings… Terminal TermWindow Beállítások…
|
||||||
Abort Terminal Shell Megszakítás
|
Abort Terminal Shell Megszakítás
|
||||||
Edit Terminal TermWindow Szerkesztés
|
Edit Terminal TermWindow Szerkesztés
|
||||||
|
Cursor background Terminal AppearancePrefView Kurzor háttere
|
||||||
Color: Terminal AppearancePrefView Szín:
|
Color: Terminal AppearancePrefView Szín:
|
||||||
The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow Az ablak címét meghatározó minta. A következő kódok használhatóak:
|
The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow Az ablak címét meghatározó minta. A következő kódok használhatóak:
|
||||||
Print Terminal TermWindow Nyomtatás
|
Print Terminal TermWindow Nyomtatás
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
1 japanese x-vnd.Haiku-Terminal 1294209621
|
1 japanese x-vnd.Haiku-Terminal 3929743651
|
||||||
Not found. Terminal TermWindow これ以上見つかりません。
|
Not found. Terminal TermWindow これ以上見つかりません。
|
||||||
Switch Terminals Terminal TermWindow ターミナルを切替える
|
Switch Terminals Terminal TermWindow ターミナルを切替える
|
||||||
Change directory Terminal TermView ディレクトリを変更
|
Change directory Terminal TermView ディレクトリを変更
|
||||||
OK Terminal TermWindow OK
|
OK Terminal TermWindow OK
|
||||||
New Terminal Terminal TermWindow 新しいターミナルを開く
|
New Terminal Terminal TermWindow 新しいターミナルを開く
|
||||||
|
Cursor text Terminal AppearancePrefView カーソル
|
||||||
Terminal couldn't start the shell. Sorry. Terminal TermApp すみません、シェルを起動できませんでした。
|
Terminal couldn't start the shell. Sorry. Terminal TermApp すみません、シェルを起動できませんでした。
|
||||||
Text size Terminal TermWindow テキストサイズ
|
Text size Terminal TermWindow テキストサイズ
|
||||||
Match case Terminal FindWindow 大文字と小文字を区別する
|
Match case Terminal FindWindow 大文字と小文字を区別する
|
||||||
@@ -50,6 +51,7 @@ The following processes are still running:\n\n\t%1\n\nIf you close the Terminal,
|
|||||||
Insert path Terminal TermView パスを挿入
|
Insert path Terminal TermView パスを挿入
|
||||||
Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n
|
Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n
|
||||||
No search string was entered. Terminal TermWindow 検索テキストが入力されていません。
|
No search string was entered. Terminal TermWindow 検索テキストが入力されていません。
|
||||||
|
Blinking cursor Terminal AppearancePrefView カーソルを点滅させる
|
||||||
Don't save Terminal PrefWindow 保存しない
|
Don't save Terminal PrefWindow 保存しない
|
||||||
Set window title Terminal TermWindow ウィンドウタイトルを設定
|
Set window title Terminal TermWindow ウィンドウタイトルを設定
|
||||||
Terminal System name ターミナル
|
Terminal System name ターミナル
|
||||||
@@ -79,6 +81,7 @@ Set tab title Terminal TermWindow タブのタイトルを設定
|
|||||||
Settings… Terminal TermWindow 設定…
|
Settings… Terminal TermWindow 設定…
|
||||||
Abort Terminal Shell 中断
|
Abort Terminal Shell 中断
|
||||||
Edit Terminal TermWindow 編集
|
Edit Terminal TermWindow 編集
|
||||||
|
Cursor background Terminal AppearancePrefView カーソルの背景
|
||||||
Color: Terminal AppearancePrefView 色:
|
Color: Terminal AppearancePrefView 色:
|
||||||
The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow パターンはウィンドウタイトルを指定します。次のプレースホルダーが\n使用できます:\n
|
The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow パターンはウィンドウタイトルを指定します。次のプレースホルダーが\n使用できます:\n
|
||||||
Print Terminal TermWindow 印刷
|
Print Terminal TermWindow 印刷
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
1 portuguese (brazil) x-vnd.Haiku-Terminal 1294209621
|
1 portuguese (brazil) x-vnd.Haiku-Terminal 3929743651
|
||||||
Not found. Terminal TermWindow Não localizado.
|
Not found. Terminal TermWindow Não localizado.
|
||||||
Switch Terminals Terminal TermWindow Alternar Terminais
|
Switch Terminals Terminal TermWindow Alternar Terminais
|
||||||
Change directory Terminal TermView Mudar de pasta
|
Change directory Terminal TermView Mudar de pasta
|
||||||
OK Terminal TermWindow OK
|
OK Terminal TermWindow OK
|
||||||
New Terminal Terminal TermWindow Novo Terminal
|
New Terminal Terminal TermWindow Novo Terminal
|
||||||
|
Cursor text Terminal AppearancePrefView Texto do cursor
|
||||||
Terminal couldn't start the shell. Sorry. Terminal TermApp Terminal não pôde iniciar o shell. Desculpe.
|
Terminal couldn't start the shell. Sorry. Terminal TermApp Terminal não pôde iniciar o shell. Desculpe.
|
||||||
Text size Terminal TermWindow Tamanho do texto
|
Text size Terminal TermWindow Tamanho do texto
|
||||||
Match case Terminal FindWindow Diferenciar maiúsculas de minúsculas
|
Match case Terminal FindWindow Diferenciar maiúsculas de minúsculas
|
||||||
@@ -50,6 +51,7 @@ The following processes are still running:\n\n\t%1\n\nIf you close the Terminal,
|
|||||||
Insert path Terminal TermView Inserir caminho
|
Insert path Terminal TermView Inserir caminho
|
||||||
Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Terminal Haiku\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui e Takashi Murai.\n\nUtilização: %s [OPTION] [SHELL]\n
|
Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Terminal Haiku\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui e Takashi Murai.\n\nUtilização: %s [OPTION] [SHELL]\n
|
||||||
No search string was entered. Terminal TermWindow Não foi introduzida nenhuma expressão para localizar.
|
No search string was entered. Terminal TermWindow Não foi introduzida nenhuma expressão para localizar.
|
||||||
|
Blinking cursor Terminal AppearancePrefView Cursor piscante
|
||||||
Don't save Terminal PrefWindow Não salvar
|
Don't save Terminal PrefWindow Não salvar
|
||||||
Set window title Terminal TermWindow Definir título da janela
|
Set window title Terminal TermWindow Definir título da janela
|
||||||
Terminal System name Terminal
|
Terminal System name Terminal
|
||||||
@@ -79,6 +81,7 @@ Set tab title Terminal TermWindow Definir o título da guia
|
|||||||
Settings… Terminal TermWindow Configurações...
|
Settings… Terminal TermWindow Configurações...
|
||||||
Abort Terminal Shell Cancelar
|
Abort Terminal Shell Cancelar
|
||||||
Edit Terminal TermWindow Editar
|
Edit Terminal TermWindow Editar
|
||||||
|
Cursor background Terminal AppearancePrefView Plano de fundo do cursor
|
||||||
Color: Terminal AppearancePrefView Cor:
|
Color: Terminal AppearancePrefView Cor:
|
||||||
The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow O padrão especificando o título da janela. Os seguintes espaços reservados\npodem ser usados:\n
|
The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow O padrão especificando o título da janela. Os seguintes espaços reservados\npodem ser usados:\n
|
||||||
Print Terminal TermWindow Imprimir
|
Print Terminal TermWindow Imprimir
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
1 swedish x-vnd.Haiku-Terminal 1294209621
|
1 swedish x-vnd.Haiku-Terminal 3929743651
|
||||||
Not found. Terminal TermWindow Hittades ej.
|
Not found. Terminal TermWindow Hittades ej.
|
||||||
Switch Terminals Terminal TermWindow Växla terminal
|
Switch Terminals Terminal TermWindow Växla terminal
|
||||||
Change directory Terminal TermView Byt katalog
|
Change directory Terminal TermView Byt katalog
|
||||||
OK Terminal TermWindow OK
|
OK Terminal TermWindow OK
|
||||||
New Terminal Terminal TermWindow Ny terminal
|
New Terminal Terminal TermWindow Ny terminal
|
||||||
|
Cursor text Terminal AppearancePrefView Markörtext
|
||||||
Terminal couldn't start the shell. Sorry. Terminal TermApp Terminalen kunde inte starta skalet.
|
Terminal couldn't start the shell. Sorry. Terminal TermApp Terminalen kunde inte starta skalet.
|
||||||
Text size Terminal TermWindow Teckenstorlek
|
Text size Terminal TermWindow Teckenstorlek
|
||||||
Match case Terminal FindWindow Matcha gemener/versaler
|
Match case Terminal FindWindow Matcha gemener/versaler
|
||||||
@@ -50,6 +51,7 @@ The following processes are still running:\n\n\t%1\n\nIf you close the Terminal,
|
|||||||
Insert path Terminal TermView Lägg till sökväg
|
Insert path Terminal TermView Lägg till sökväg
|
||||||
Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Haiku Terminal\nUpphovsrätt 2001-2009 Haiku, Inc.\nUpphovsrätt (C) 1999 Kazuho Okui and Takashi Murai.\n\nHantering: %s [OPTION] [SHELL]\n
|
Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Haiku Terminal\nUpphovsrätt 2001-2009 Haiku, Inc.\nUpphovsrätt (C) 1999 Kazuho Okui and Takashi Murai.\n\nHantering: %s [OPTION] [SHELL]\n
|
||||||
No search string was entered. Terminal TermWindow Ingen söksträng angiven.
|
No search string was entered. Terminal TermWindow Ingen söksträng angiven.
|
||||||
|
Blinking cursor Terminal AppearancePrefView Blinkande markör
|
||||||
Don't save Terminal PrefWindow Spara inte
|
Don't save Terminal PrefWindow Spara inte
|
||||||
Set window title Terminal TermWindow Ange fönstertitel
|
Set window title Terminal TermWindow Ange fönstertitel
|
||||||
Terminal System name Terminal
|
Terminal System name Terminal
|
||||||
@@ -79,6 +81,7 @@ Set tab title Terminal TermWindow Ange fliktitel
|
|||||||
Settings… Terminal TermWindow Inställningar...
|
Settings… Terminal TermWindow Inställningar...
|
||||||
Abort Terminal Shell Avbryt
|
Abort Terminal Shell Avbryt
|
||||||
Edit Terminal TermWindow Redigera
|
Edit Terminal TermWindow Redigera
|
||||||
|
Cursor background Terminal AppearancePrefView Markörbakgrund
|
||||||
Color: Terminal AppearancePrefView Färg:
|
Color: Terminal AppearancePrefView Färg:
|
||||||
The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow Mönstret bestämmer fönstrets namn. Följande alternativ finns:\n
|
The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow Mönstret bestämmer fönstrets namn. Följande alternativ finns:\n
|
||||||
Print Terminal TermWindow Skriv ut
|
Print Terminal TermWindow Skriv ut
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ Settings Settings Window Beállítások
|
|||||||
Confirmation WebPositive Window Megerősítés
|
Confirmation WebPositive Window Megerősítés
|
||||||
Window WebPositive Window Ablak
|
Window WebPositive Window Ablak
|
||||||
Decrease size WebPositive Window Méret csökkentése
|
Decrease size WebPositive Window Méret csökkentése
|
||||||
Serif font: Settings Window Serif betűtípus:
|
Serif font: Settings Window Talpas betűtípus:
|
||||||
Loading %url WebPositive Window %url betöltése
|
Loading %url WebPositive Window %url betöltése
|
||||||
Page source WebPositive Window Oldal forrása
|
Page source WebPositive Window Oldal forrása
|
||||||
Next WebPositive Window Következő
|
Next WebPositive Window Következő
|
||||||
@@ -48,7 +48,7 @@ New window WebPositive Window Új ablak
|
|||||||
Open Download Window Megnyitás
|
Open Download Window Megnyitás
|
||||||
Reload WebPositive Window Újratöltés
|
Reload WebPositive Window Újratöltés
|
||||||
Downloads Download Window Letöltések
|
Downloads Download Window Letöltések
|
||||||
Sans serif font: Settings Window Sans serif betűtípus:
|
Sans serif font: Settings Window Talpatlan betűtípus:
|
||||||
Over %days days left Download Window Több, mint %days nap van hátra
|
Over %days days left Download Window Több, mint %days nap van hátra
|
||||||
Forward WebPositive Window Következő
|
Forward WebPositive Window Következő
|
||||||
of Download Window ...as in '12kB of 256kB' /
|
of Download Window ...as in '12kB of 256kB' /
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
1 swedish x-vnd.Haiku-desklink 3053930521
|
1 swedish x-vnd.Haiku-desklink 2797960853
|
||||||
Control physical output MediaReplicant Kontrollera fysisk utsignal
|
Control physical output MediaReplicant Kontrollera fysisk utsignal
|
||||||
Couldn't launch MediaReplicant Kunde inte starta
|
Couldn't launch MediaReplicant Kunde inte starta
|
||||||
OK MediaReplicant OK
|
OK MediaReplicant OK
|
||||||
Sound preferences… MediaReplicant Ljudinställningar...
|
Sound preferences… MediaReplicant Ljudinställningar...
|
||||||
%g dB MediaReplicant %g dB
|
%g dB MediaReplicant %g dB
|
||||||
|
Open %name DeskButton Don't translate variable %name Öppna %name
|
||||||
No media server running VolumeControl Ingen aktiv mediaserver
|
No media server running VolumeControl Ingen aktiv mediaserver
|
||||||
Media preferences… MediaReplicant Mediainställningar...
|
Media preferences… MediaReplicant Mediainställningar...
|
||||||
Open MediaPlayer MediaReplicant Öppna MediaSpelare
|
Open MediaPlayer MediaReplicant Öppna MediaSpelare
|
||||||
|
|||||||
@@ -1,21 +1,29 @@
|
|||||||
1 german x-vnd.Haiku-libbe 864109244
|
1 german x-vnd.Haiku-libbe 672385853
|
||||||
|
gamma AboutWindow Gamma
|
||||||
|
beta AboutWindow Beta
|
||||||
%3.2f GiB StringForSize %3.2f GiB
|
%3.2f GiB StringForSize %3.2f GiB
|
||||||
Written by: AboutWindow Von:
|
Written by: AboutWindow Von:
|
||||||
About %app% AboutMenuItem Über %app%
|
About %app% AboutMenuItem Über %app%
|
||||||
Cut TextView Ausschneiden
|
Cut TextView Ausschneiden
|
||||||
|
Version AboutWindow Version
|
||||||
Cannot create the replicant for \"%description\".\n%error ZombieReplicantView Replikant für \"%description\" konnte nicht erstellt werden.\n%error
|
Cannot create the replicant for \"%description\".\n%error ZombieReplicantView Replikant für \"%description\" konnte nicht erstellt werden.\n%error
|
||||||
|
About AboutWindow Über
|
||||||
Copy TextView Kopieren
|
Copy TextView Kopieren
|
||||||
%3.2f KiB StringForSize %3.2f KiB
|
%3.2f KiB StringForSize %3.2f KiB
|
||||||
%d bytes StringForSize %d Bytes
|
%d bytes StringForSize %d Bytes
|
||||||
|
alpha AboutWindow Alpha
|
||||||
Error PrintJob Fehler
|
Error PrintJob Fehler
|
||||||
No Pages to print! PrintJob Keine Seiten zu drucken!
|
No Pages to print! PrintJob Keine Seiten zu drucken!
|
||||||
|
All Rights Reserved. AboutWindow Alle Rechte vorbehalten.
|
||||||
OK Dragger OK
|
OK Dragger OK
|
||||||
OK PrintJob OK
|
OK PrintJob OK
|
||||||
Green: ColorControl Grün:
|
Green: ColorControl Grün:
|
||||||
|
Version history: AboutWindow Historie:
|
||||||
Remove replicant Dragger Replikant entfernen
|
Remove replicant Dragger Replikant entfernen
|
||||||
OK ZombieReplicantView OK
|
OK ZombieReplicantView OK
|
||||||
Print Server is not responding. PrintJob Drucker-Server reagiert nicht.
|
Print Server is not responding. PrintJob Drucker-Server reagiert nicht.
|
||||||
Paste TextView Einfügen
|
Paste TextView Einfügen
|
||||||
|
Special Thanks: AboutWindow Besonderen Dank an:
|
||||||
%.2f TiB StringForSize %.2f TiB
|
%.2f TiB StringForSize %.2f TiB
|
||||||
Cannot locate the application for the replicant. No application signature supplied.\n%error ZombieReplicantView Das Ursprungsprogramm für den Replikanten konnte nicht gefunden werden, da keine Programm-Signatur zur Verfügung steht.\n%error
|
Cannot locate the application for the replicant. No application signature supplied.\n%error ZombieReplicantView Das Ursprungsprogramm für den Replikanten konnte nicht gefunden werden, da keine Programm-Signatur zur Verfügung steht.\n%error
|
||||||
Redo TextView Wiederholen
|
Redo TextView Wiederholen
|
||||||
@@ -26,6 +34,8 @@ Undo TextView Rückgängig
|
|||||||
Red: ColorControl Rot:
|
Red: ColorControl Rot:
|
||||||
%3.2f MiB StringForSize %3.2f MiB
|
%3.2f MiB StringForSize %3.2f MiB
|
||||||
About %app… Dragger Über %app...
|
About %app… Dragger Über %app...
|
||||||
|
development AboutWindow Entwicklung
|
||||||
Error ZombieReplicantView Fehler
|
Error ZombieReplicantView Fehler
|
||||||
Blue: ColorControl Blau:
|
Blue: ColorControl Blau:
|
||||||
|
gold master AboutWindow Golden Master
|
||||||
Can't delete this replicant from its original application. Life goes on. Dragger Dieser Replikant kann nicht von seinem Ursprungsprogramm entfernt werden. Das Leben geht weiter.
|
Can't delete this replicant from its original application. Life goes on. Dragger Dieser Replikant kann nicht von seinem Ursprungsprogramm entfernt werden. Das Leben geht weiter.
|
||||||
|
|||||||
@@ -1,21 +1,29 @@
|
|||||||
1 hungarian x-vnd.Haiku-libbe 864109244
|
1 hungarian x-vnd.Haiku-libbe 672385853
|
||||||
|
gamma AboutWindow gamma
|
||||||
|
beta AboutWindow béta
|
||||||
%3.2f GiB StringForSize %3.2f GB
|
%3.2f GiB StringForSize %3.2f GB
|
||||||
Written by: AboutWindow Írta:
|
Written by: AboutWindow Írta:
|
||||||
About %app% AboutMenuItem %app% névjegye
|
About %app% AboutMenuItem %app% névjegye
|
||||||
Cut TextView Kivágás
|
Cut TextView Kivágás
|
||||||
|
Version AboutWindow Verzió
|
||||||
Cannot create the replicant for \"%description\".\n%error ZombieReplicantView Nem lehet replikánst létrehozni ehhez: %description.\n%error
|
Cannot create the replicant for \"%description\".\n%error ZombieReplicantView Nem lehet replikánst létrehozni ehhez: %description.\n%error
|
||||||
|
About AboutWindow Névjegy
|
||||||
Copy TextView Másolás
|
Copy TextView Másolás
|
||||||
%3.2f KiB StringForSize %3.2f KB
|
%3.2f KiB StringForSize %3.2f KB
|
||||||
%d bytes StringForSize %Ld byte
|
%d bytes StringForSize %Ld byte
|
||||||
|
alpha AboutWindow alfa
|
||||||
Error PrintJob Hiba
|
Error PrintJob Hiba
|
||||||
No Pages to print! PrintJob Nincs nyomtatható oldal!
|
No Pages to print! PrintJob Nincs nyomtatható oldal!
|
||||||
|
All Rights Reserved. AboutWindow Minden jog fenntartva.
|
||||||
OK Dragger Rendben
|
OK Dragger Rendben
|
||||||
OK PrintJob Rendben
|
OK PrintJob Rendben
|
||||||
Green: ColorControl Zöld:
|
Green: ColorControl Zöld:
|
||||||
|
Version history: AboutWindow Előző verziók:
|
||||||
Remove replicant Dragger Replikáns eltávolítása
|
Remove replicant Dragger Replikáns eltávolítása
|
||||||
OK ZombieReplicantView Rendben
|
OK ZombieReplicantView Rendben
|
||||||
Print Server is not responding. PrintJob A nyomtatókiszolgáló nem válaszol.
|
Print Server is not responding. PrintJob A nyomtatókiszolgáló nem válaszol.
|
||||||
Paste TextView Beillesztés
|
Paste TextView Beillesztés
|
||||||
|
Special Thanks: AboutWindow Külön köszönet:
|
||||||
%.2f TiB StringForSize %.2f TB
|
%.2f TiB StringForSize %.2f TB
|
||||||
Cannot locate the application for the replicant. No application signature supplied.\n%error ZombieReplicantView Nem található a replikánshoz tartozó program. Nincs megadva programaláírás.\n%error
|
Cannot locate the application for the replicant. No application signature supplied.\n%error ZombieReplicantView Nem található a replikánshoz tartozó program. Nincs megadva programaláírás.\n%error
|
||||||
Redo TextView Újra
|
Redo TextView Újra
|
||||||
@@ -26,6 +34,8 @@ Undo TextView Visszavonás
|
|||||||
Red: ColorControl Vörös:
|
Red: ColorControl Vörös:
|
||||||
%3.2f MiB StringForSize %3.2f MB
|
%3.2f MiB StringForSize %3.2f MB
|
||||||
About %app… Dragger %app névjegye…
|
About %app… Dragger %app névjegye…
|
||||||
|
development AboutWindow fejlesztés
|
||||||
Error ZombieReplicantView Hiba
|
Error ZombieReplicantView Hiba
|
||||||
Blue: ColorControl Kék:
|
Blue: ColorControl Kék:
|
||||||
|
gold master AboutWindow arany fokozatú
|
||||||
Can't delete this replicant from its original application. Life goes on. Dragger Nem lehet ezt a replikánst törölni az eredeti programtól.
|
Can't delete this replicant from its original application. Life goes on. Dragger Nem lehet ezt a replikánst törölni az eredeti programtól.
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
1 japanese x-vnd.Haiku-libbe 864109244
|
1 japanese x-vnd.Haiku-libbe 2804831005
|
||||||
%3.2f GiB StringForSize %3.2f GiB
|
%3.2f GiB StringForSize %3.2f GiB
|
||||||
Written by: AboutWindow 作者:
|
Written by: AboutWindow 作者:
|
||||||
About %app% AboutMenuItem %app% について
|
About %app% AboutMenuItem %app% について
|
||||||
Cut TextView 切り取り
|
Cut TextView 切り取り
|
||||||
|
Version AboutWindow バージョン
|
||||||
Cannot create the replicant for \"%description\".\n%error ZombieReplicantView \"%description\" 用のレプリカントを作成できません。\n%error
|
Cannot create the replicant for \"%description\".\n%error ZombieReplicantView \"%description\" 用のレプリカントを作成できません。\n%error
|
||||||
|
About AboutWindow このソフトウェアについて…
|
||||||
Copy TextView コピー
|
Copy TextView コピー
|
||||||
%3.2f KiB StringForSize %3.2f KiB
|
%3.2f KiB StringForSize %3.2f KiB
|
||||||
%d bytes StringForSize %d バイト
|
%d bytes StringForSize %d バイト
|
||||||
@@ -12,6 +14,7 @@ No Pages to print! PrintJob 印刷するページがありません。
|
|||||||
OK Dragger OK
|
OK Dragger OK
|
||||||
OK PrintJob OK
|
OK PrintJob OK
|
||||||
Green: ColorControl 緑:
|
Green: ColorControl 緑:
|
||||||
|
Version history: AboutWindow 改訂履歴:
|
||||||
Remove replicant Dragger レプリカントを削除
|
Remove replicant Dragger レプリカントを削除
|
||||||
OK ZombieReplicantView OK
|
OK ZombieReplicantView OK
|
||||||
Print Server is not responding. PrintJob プリントサーバーが応答しません。
|
Print Server is not responding. PrintJob プリントサーバーが応答しません。
|
||||||
|
|||||||
@@ -1,21 +1,29 @@
|
|||||||
1 portuguese (brazil) x-vnd.Haiku-libbe 864109244
|
1 portuguese (brazil) x-vnd.Haiku-libbe 672385853
|
||||||
|
gamma AboutWindow gama
|
||||||
|
beta AboutWindow beta
|
||||||
%3.2f GiB StringForSize %3.2f GB
|
%3.2f GiB StringForSize %3.2f GB
|
||||||
Written by: AboutWindow Escrito por:
|
Written by: AboutWindow Escrito por:
|
||||||
About %app% AboutMenuItem Sobre %app%
|
About %app% AboutMenuItem Sobre %app%
|
||||||
Cut TextView Cortar
|
Cut TextView Cortar
|
||||||
|
Version AboutWindow Versão
|
||||||
Cannot create the replicant for \"%description\".\n%error ZombieReplicantView Não é possível criar o replicante para \"%description\".\n%error
|
Cannot create the replicant for \"%description\".\n%error ZombieReplicantView Não é possível criar o replicante para \"%description\".\n%error
|
||||||
|
About AboutWindow Sobre
|
||||||
Copy TextView Copiar
|
Copy TextView Copiar
|
||||||
%3.2f KiB StringForSize %3.2f KB
|
%3.2f KiB StringForSize %3.2f KB
|
||||||
%d bytes StringForSize %d bytes
|
%d bytes StringForSize %d bytes
|
||||||
|
alpha AboutWindow alfa
|
||||||
Error PrintJob Erro
|
Error PrintJob Erro
|
||||||
No Pages to print! PrintJob Nenhuma Página para imprimir!
|
No Pages to print! PrintJob Nenhuma Página para imprimir!
|
||||||
|
All Rights Reserved. AboutWindow Todos os direitos reservados.
|
||||||
OK Dragger OK
|
OK Dragger OK
|
||||||
OK PrintJob OK
|
OK PrintJob OK
|
||||||
Green: ColorControl Verde:
|
Green: ColorControl Verde:
|
||||||
|
Version history: AboutWindow Histórico de versões
|
||||||
Remove replicant Dragger Remover replicante
|
Remove replicant Dragger Remover replicante
|
||||||
OK ZombieReplicantView OK
|
OK ZombieReplicantView OK
|
||||||
Print Server is not responding. PrintJob Servidor de impressão não está respondendo.
|
Print Server is not responding. PrintJob Servidor de impressão não está respondendo.
|
||||||
Paste TextView Colar
|
Paste TextView Colar
|
||||||
|
Special Thanks: AboutWindow Agradecimentos Especiais
|
||||||
%.2f TiB StringForSize %.2f TB
|
%.2f TiB StringForSize %.2f TB
|
||||||
Cannot locate the application for the replicant. No application signature supplied.\n%error ZombieReplicantView Não é possível localizar o aplicativo para o replicante. Nenhuma assinatura de aplicativo fornecida.\n%error
|
Cannot locate the application for the replicant. No application signature supplied.\n%error ZombieReplicantView Não é possível localizar o aplicativo para o replicante. Nenhuma assinatura de aplicativo fornecida.\n%error
|
||||||
Redo TextView Refazer
|
Redo TextView Refazer
|
||||||
@@ -26,6 +34,8 @@ Undo TextView Desfazer
|
|||||||
Red: ColorControl Vermelho:
|
Red: ColorControl Vermelho:
|
||||||
%3.2f MiB StringForSize %3.2f MB
|
%3.2f MiB StringForSize %3.2f MB
|
||||||
About %app… Dragger Sobre %app…
|
About %app… Dragger Sobre %app…
|
||||||
|
development AboutWindow desenvolvimento
|
||||||
Error ZombieReplicantView Erro
|
Error ZombieReplicantView Erro
|
||||||
Blue: ColorControl Azul:
|
Blue: ColorControl Azul:
|
||||||
|
gold master AboutWindow cópia mestra
|
||||||
Can't delete this replicant from its original application. Life goes on. Dragger Não é possível excluir este replicante de seu aplicativo original. A vida continua.
|
Can't delete this replicant from its original application. Life goes on. Dragger Não é possível excluir este replicante de seu aplicativo original. A vida continua.
|
||||||
|
|||||||
@@ -1,21 +1,29 @@
|
|||||||
1 swedish x-vnd.Haiku-libbe 864109244
|
1 swedish x-vnd.Haiku-libbe 672385853
|
||||||
|
gamma AboutWindow gamma
|
||||||
|
beta AboutWindow beta
|
||||||
%3.2f GiB StringForSize %3.2f GiB
|
%3.2f GiB StringForSize %3.2f GiB
|
||||||
Written by: AboutWindow Skrivet av:
|
Written by: AboutWindow Skrivet av:
|
||||||
About %app% AboutMenuItem Om %app%
|
About %app% AboutMenuItem Om %app%
|
||||||
Cut TextView Klippa ut
|
Cut TextView Klippa ut
|
||||||
|
Version AboutWindow Version
|
||||||
Cannot create the replicant for \"%description\".\n%error ZombieReplicantView Kan inte skapa replikanten för "%description".\n%error
|
Cannot create the replicant for \"%description\".\n%error ZombieReplicantView Kan inte skapa replikanten för "%description".\n%error
|
||||||
|
About AboutWindow Om
|
||||||
Copy TextView Kopiera
|
Copy TextView Kopiera
|
||||||
%3.2f KiB StringForSize %3.2f KiB
|
%3.2f KiB StringForSize %3.2f KiB
|
||||||
%d bytes StringForSize %d byte
|
%d bytes StringForSize %d byte
|
||||||
|
alpha AboutWindow alfa
|
||||||
Error PrintJob Fel
|
Error PrintJob Fel
|
||||||
No Pages to print! PrintJob Inga sidor att skriva ut!
|
No Pages to print! PrintJob Inga sidor att skriva ut!
|
||||||
|
All Rights Reserved. AboutWindow Alla rättigheter resarverade.
|
||||||
OK Dragger OK
|
OK Dragger OK
|
||||||
OK PrintJob OK
|
OK PrintJob OK
|
||||||
Green: ColorControl Grön:
|
Green: ColorControl Grön:
|
||||||
|
Version history: AboutWindow Versionshistorik:
|
||||||
Remove replicant Dragger Ta bort replikant
|
Remove replicant Dragger Ta bort replikant
|
||||||
OK ZombieReplicantView OK
|
OK ZombieReplicantView OK
|
||||||
Print Server is not responding. PrintJob Utskriftservern svarar inte.
|
Print Server is not responding. PrintJob Utskriftservern svarar inte.
|
||||||
Paste TextView Klistra in
|
Paste TextView Klistra in
|
||||||
|
Special Thanks: AboutWindow Särskilt tack till:
|
||||||
%.2f TiB StringForSize %.2f TiB
|
%.2f TiB StringForSize %.2f TiB
|
||||||
Cannot locate the application for the replicant. No application signature supplied.\n%error ZombieReplicantView Kan inte hitta programmet för replikanten. Ingen programsignatur är angiven.\n%error
|
Cannot locate the application for the replicant. No application signature supplied.\n%error ZombieReplicantView Kan inte hitta programmet för replikanten. Ingen programsignatur är angiven.\n%error
|
||||||
Redo TextView Gör om
|
Redo TextView Gör om
|
||||||
@@ -26,6 +34,8 @@ Undo TextView Ångra
|
|||||||
Red: ColorControl Röd:
|
Red: ColorControl Röd:
|
||||||
%3.2f MiB StringForSize %3.2f MiB
|
%3.2f MiB StringForSize %3.2f MiB
|
||||||
About %app… Dragger Om %app...
|
About %app… Dragger Om %app...
|
||||||
|
development AboutWindow utveckling
|
||||||
Error ZombieReplicantView Fel
|
Error ZombieReplicantView Fel
|
||||||
Blue: ColorControl Blå:
|
Blue: ColorControl Blå:
|
||||||
|
gold master AboutWindow guld mästare
|
||||||
Can't delete this replicant from its original application. Life goes on. Dragger Kan inte ta bort replikanten från dess program. Livet fortsätter som vanligt.
|
Can't delete this replicant from its original application. Life goes on. Dragger Kan inte ta bort replikanten från dess program. Livet fortsätter som vanligt.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
1 german x-vnd.Haiku-libtracker 1301055003
|
1 german x-vnd.Haiku-libtracker 3955647850
|
||||||
common B_COMMON_DIRECTORY Allgemein
|
common B_COMMON_DIRECTORY Allgemein
|
||||||
OK WidgetAttributeText OK
|
OK WidgetAttributeText OK
|
||||||
Icon view VolumeWindow Icon-Ansicht
|
Icon view VolumeWindow Icon-Ansicht
|
||||||
@@ -452,6 +452,7 @@ Mount DeskWindow Einhängen
|
|||||||
Mount ContainerWindow Einhängen
|
Mount ContainerWindow Einhängen
|
||||||
%capacity (%used used -- %free free) InfoWindow %capacity (%used benutzt -- %free frei)
|
%capacity (%used used -- %free free) InfoWindow %capacity (%used benutzt -- %free frei)
|
||||||
Cancel FSClipBoard Abbrechen
|
Cancel FSClipBoard Abbrechen
|
||||||
|
Restart Deskbar DeskWindow Deskbar neu starten
|
||||||
Cut more ContainerWindow Mehr ausschneiden
|
Cut more ContainerWindow Mehr ausschneiden
|
||||||
Deleting: StatusWindow Löschen:
|
Deleting: StatusWindow Löschen:
|
||||||
Empty Trash InfoWindow Papierkorb leeren
|
Empty Trash InfoWindow Papierkorb leeren
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
1 hungarian x-vnd.Haiku-libtracker 1301055003
|
1 hungarian x-vnd.Haiku-libtracker 3955647850
|
||||||
common B_COMMON_DIRECTORY Közös
|
common B_COMMON_DIRECTORY Közös
|
||||||
OK WidgetAttributeText Rendben
|
OK WidgetAttributeText Rendben
|
||||||
Icon view VolumeWindow Ikon nézet
|
Icon view VolumeWindow Ikon nézet
|
||||||
@@ -452,6 +452,7 @@ Mount DeskWindow Csatolás
|
|||||||
Mount ContainerWindow Csatolás
|
Mount ContainerWindow Csatolás
|
||||||
%capacity (%used used -- %free free) InfoWindow %capacity (%used használt -- %free szabad)
|
%capacity (%used used -- %free free) InfoWindow %capacity (%used használt -- %free szabad)
|
||||||
Cancel FSClipBoard Mégse
|
Cancel FSClipBoard Mégse
|
||||||
|
Restart Deskbar DeskWindow Asztalsáv újraindítása
|
||||||
Cut more ContainerWindow Több kivágása
|
Cut more ContainerWindow Több kivágása
|
||||||
Deleting: StatusWindow Törlés:
|
Deleting: StatusWindow Törlés:
|
||||||
Empty Trash InfoWindow Szemetes ürítése
|
Empty Trash InfoWindow Szemetes ürítése
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
1 japanese x-vnd.Haiku-libtracker 1680698556
|
1 japanese x-vnd.Haiku-libtracker 40324107
|
||||||
OK WidgetAttributeText OK
|
OK WidgetAttributeText OK
|
||||||
Icon view VolumeWindow アイコン表示
|
Icon view VolumeWindow アイコン表示
|
||||||
Add-ons FilePanelPriv アドオン
|
Add-ons FilePanelPriv アドオン
|
||||||
@@ -447,6 +447,7 @@ Mount DeskWindow マウント
|
|||||||
Mount ContainerWindow マウント
|
Mount ContainerWindow マウント
|
||||||
%capacity (%used used -- %free free) InfoWindow %capacity (%used 使用中 -- %free 使用可能)
|
%capacity (%used used -- %free free) InfoWindow %capacity (%used 使用中 -- %free 使用可能)
|
||||||
Cancel FSClipBoard 中止
|
Cancel FSClipBoard 中止
|
||||||
|
Restart Deskbar DeskWindow Deskbar を再起動
|
||||||
Cut more ContainerWindow さらに切り取る
|
Cut more ContainerWindow さらに切り取る
|
||||||
Deleting: StatusWindow 削除中:
|
Deleting: StatusWindow 削除中:
|
||||||
Empty Trash InfoWindow ごみ箱を空にする
|
Empty Trash InfoWindow ごみ箱を空にする
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
1 portuguese (brazil) x-vnd.Haiku-libtracker 1301055003
|
1 portuguese (brazil) x-vnd.Haiku-libtracker 3955647850
|
||||||
common B_COMMON_DIRECTORY comum
|
common B_COMMON_DIRECTORY comum
|
||||||
OK WidgetAttributeText OK
|
OK WidgetAttributeText OK
|
||||||
Icon view VolumeWindow Em ícones
|
Icon view VolumeWindow Em ícones
|
||||||
@@ -452,6 +452,7 @@ Mount DeskWindow Montar
|
|||||||
Mount ContainerWindow Montar
|
Mount ContainerWindow Montar
|
||||||
%capacity (%used used -- %free free) InfoWindow %capacity (%used utilizados -- %free livres)
|
%capacity (%used used -- %free free) InfoWindow %capacity (%used utilizados -- %free livres)
|
||||||
Cancel FSClipBoard Cancelar
|
Cancel FSClipBoard Cancelar
|
||||||
|
Restart Deskbar DeskWindow Reiniciar a Deskbar
|
||||||
Cut more ContainerWindow Cortar mais
|
Cut more ContainerWindow Cortar mais
|
||||||
Deleting: StatusWindow Excluindo:
|
Deleting: StatusWindow Excluindo:
|
||||||
Empty Trash InfoWindow Esvaziar Lixeira
|
Empty Trash InfoWindow Esvaziar Lixeira
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
1 swedish x-vnd.Haiku-libtracker 1301055003
|
1 swedish x-vnd.Haiku-libtracker 3955647850
|
||||||
common B_COMMON_DIRECTORY gemensam
|
common B_COMMON_DIRECTORY gemensam
|
||||||
OK WidgetAttributeText OK
|
OK WidgetAttributeText OK
|
||||||
Icon view VolumeWindow Ikonvy
|
Icon view VolumeWindow Ikonvy
|
||||||
@@ -452,6 +452,7 @@ Mount DeskWindow Montera
|
|||||||
Mount ContainerWindow Montera
|
Mount ContainerWindow Montera
|
||||||
%capacity (%used used -- %free free) InfoWindow %capacity (%used använt -- %free ledigt)
|
%capacity (%used used -- %free free) InfoWindow %capacity (%used använt -- %free ledigt)
|
||||||
Cancel FSClipBoard Avbryt
|
Cancel FSClipBoard Avbryt
|
||||||
|
Restart Deskbar DeskWindow Starta om Deskbaren
|
||||||
Cut more ContainerWindow Klipp ut mer
|
Cut more ContainerWindow Klipp ut mer
|
||||||
Deleting: StatusWindow Tar bort:
|
Deleting: StatusWindow Tar bort:
|
||||||
Empty Trash InfoWindow Töm papperskorg
|
Empty Trash InfoWindow Töm papperskorg
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
1 german x-vnd.Haiku-Appearance 1428480647
|
1 german x-vnd.Haiku-Appearance 2950529393
|
||||||
Plain font: Font view Normal:
|
Plain font: Font view Normal:
|
||||||
Control highlight Colors tab Steuerelement - Ausgewählt
|
Control highlight Colors tab Steuerelement - Ausgewählt
|
||||||
Control border Colors tab Steuerelement - Rahmen
|
Control border Colors tab Steuerelement - Rahmen
|
||||||
@@ -23,27 +23,33 @@ Tooltip background Colors tab Tooltip - Hintergrund
|
|||||||
Selected menu item background Colors tab Menü - Hintergrund (ausgewählt)
|
Selected menu item background Colors tab Menü - Hintergrund (ausgewählt)
|
||||||
Antialiasing APRWindow Kantenglättung
|
Antialiasing APRWindow Kantenglättung
|
||||||
Navigation base Colors tab Navigation - Grundfarbe
|
Navigation base Colors tab Navigation - Grundfarbe
|
||||||
|
Selected list item text Colors tab Liste - Text (ausgewählt)
|
||||||
Window border Colors tab Fenster - Rahmen
|
Window border Colors tab Fenster - Rahmen
|
||||||
|
Double: DecorSettingsView Doppelt:
|
||||||
Window tab text Colors tab Reiter - Text
|
Window tab text Colors tab Reiter - Text
|
||||||
Document text Colors tab Dokument - Text
|
Document text Colors tab Dokument - Text
|
||||||
Navigation pulse Colors tab Navigation - Leuchtfarbe
|
Navigation pulse Colors tab Navigation - Leuchtfarbe
|
||||||
Window decorator: DecorSettingsView Fenster-Dekorator:
|
Window decorator: DecorSettingsView Fenster-Dekorator:
|
||||||
Selected menu item text Colors tab Menü - Text (ausgewählt)
|
Selected menu item text Colors tab Menü - Text (ausgewählt)
|
||||||
Menu background Colors tab Menü - Hintergrund
|
Menu background Colors tab Menü - Hintergrund
|
||||||
|
List background Colors tab Liste - Hintergrund
|
||||||
OK DecorSettingsView OK
|
OK DecorSettingsView OK
|
||||||
Control mark Colors tab Steuerelement - Markierung
|
Control mark Colors tab Steuerelement - Markierung
|
||||||
Size: Font Selection view Größe:
|
Size: Font Selection view Größe:
|
||||||
|
Selected list item background Colors tab Liste - Hintergrund (ausgewählt)
|
||||||
Panel background Colors tab Oberfläche - Hintergrund
|
Panel background Colors tab Oberfläche - Hintergrund
|
||||||
Menu font: Font view Menü:
|
Menu font: Font view Menü:
|
||||||
Colors APRWindow Farben
|
Colors APRWindow Farben
|
||||||
Control background Colors tab Steuerelement - Hintergrund
|
Control background Colors tab Steuerelement - Hintergrund
|
||||||
Inactive window tab Colors tab Reiter (inaktiv)
|
Inactive window tab Colors tab Reiter (inaktiv)
|
||||||
|
List item text Colors tab Liste - Text
|
||||||
Appearance System name Erscheinungsbild
|
Appearance System name Erscheinungsbild
|
||||||
Fixed font: Font view Feste Breite:
|
Fixed font: Font view Feste Breite:
|
||||||
The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Franz jagt im total verwahrlosten Taxi quer durch Bayern.
|
The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Franz jagt im total verwahrlosten Taxi quer durch Bayern.
|
||||||
Reduce colored edges filter strength: AntialiasingSettingsView Farbsaumfilter:
|
Reduce colored edges filter strength: AntialiasingSettingsView Farbsaumfilter:
|
||||||
Subpixel based anti-aliasing in combination with glyph hinting is not available in this build of Haiku to avoid possible patent issues. To enable this feature, you have to build Haiku yourself and enable certain options in the libfreetype configuration header. AntialiasingSettingsView Zur Vermeidung von möglichen Patentproblemen ist die Kombination von Subpixel-Kantenglättung und Glyph-Hinting deaktiviert. Um diese Funktion zu aktivieren, müssen spezielle Optionen im Konfigurationsheader der Freetype-Bibliothek freigeschaltet und anschließend Haiku neu kompiliert werden.
|
Subpixel based anti-aliasing in combination with glyph hinting is not available in this build of Haiku to avoid possible patent issues. To enable this feature, you have to build Haiku yourself and enable certain options in the libfreetype configuration header. AntialiasingSettingsView Zur Vermeidung von möglichen Patentproblemen ist die Kombination von Subpixel-Kantenglättung und Glyph-Hinting deaktiviert. Um diese Funktion zu aktivieren, müssen spezielle Optionen im Konfigurationsheader der Freetype-Bibliothek freigeschaltet und anschließend Haiku neu kompiliert werden.
|
||||||
Control text Colors tab Steuerelement - Text
|
Control text Colors tab Steuerelement - Text
|
||||||
|
Single: DecorSettingsView Einfach:
|
||||||
Tooltip text Colors tab Tooltip - Text
|
Tooltip text Colors tab Tooltip - Text
|
||||||
Bold font: Font view Fett:
|
Bold font: Font view Fett:
|
||||||
Inactive window border Colors tab Fenster - Rahmen (inaktiv)
|
Inactive window border Colors tab Fenster - Rahmen (inaktiv)
|
||||||
@@ -52,6 +58,7 @@ LCD subpixel AntialiasingSettingsView LCD-Subpixel
|
|||||||
Selected menu item border Colors tab Menü - Rahmen (ausgewählt)
|
Selected menu item border Colors tab Menü - Rahmen (ausgewählt)
|
||||||
Strong AntialiasingSettingsView Stark
|
Strong AntialiasingSettingsView Stark
|
||||||
Panel text Colors tab Fenster - Text
|
Panel text Colors tab Fenster - Text
|
||||||
|
Arrow style DecorSettingsView Scroll-Pfeile
|
||||||
Monospaced fonts only AntialiasingSettingsView Nur nicht-proportionale Schriften
|
Monospaced fonts only AntialiasingSettingsView Nur nicht-proportionale Schriften
|
||||||
Look and feel APRWindow Aussehen & Handhabung
|
Look and feel APRWindow Aussehen & Handhabung
|
||||||
Antialiasing menu AntialiasingSettingsView Kantenglättungs-Menü
|
Antialiasing menu AntialiasingSettingsView Kantenglättungs-Menü
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
1 hungarian x-vnd.Haiku-Appearance 1428480647
|
1 hungarian x-vnd.Haiku-Appearance 2950529393
|
||||||
Plain font: Font view Alap betűtípus:
|
Plain font: Font view Alap betűtípus:
|
||||||
Control highlight Colors tab Kiválasztott vezérlőelem
|
Control highlight Colors tab Kiválasztott vezérlőelem
|
||||||
Control border Colors tab Vezérlőelem kerete
|
Control border Colors tab Vezérlőelem kerete
|
||||||
@@ -23,27 +23,33 @@ Tooltip background Colors tab Eszköztár háttere
|
|||||||
Selected menu item background Colors tab Kiválasztott menüelem háttere
|
Selected menu item background Colors tab Kiválasztott menüelem háttere
|
||||||
Antialiasing APRWindow Élsimítás
|
Antialiasing APRWindow Élsimítás
|
||||||
Navigation base Colors tab Navigációs alapszín
|
Navigation base Colors tab Navigációs alapszín
|
||||||
|
Selected list item text Colors tab Kiválasztott listaelem
|
||||||
Window border Colors tab Ablakkeret
|
Window border Colors tab Ablakkeret
|
||||||
|
Double: DecorSettingsView Dupla:
|
||||||
Window tab text Colors tab Ablakfül szövege
|
Window tab text Colors tab Ablakfül szövege
|
||||||
Document text Colors tab Dokumentumszöveg
|
Document text Colors tab Dokumentumszöveg
|
||||||
Navigation pulse Colors tab Navigációs pulzálás
|
Navigation pulse Colors tab Navigációs pulzálás
|
||||||
Window decorator: DecorSettingsView Ablakdekoráció:
|
Window decorator: DecorSettingsView Ablakdekoráció:
|
||||||
Selected menu item text Colors tab Kiválasztott menüelem
|
Selected menu item text Colors tab Kiválasztott menüelem
|
||||||
Menu background Colors tab Menü háttere
|
Menu background Colors tab Menü háttere
|
||||||
|
List background Colors tab Lista háttere
|
||||||
OK DecorSettingsView Rendben
|
OK DecorSettingsView Rendben
|
||||||
Control mark Colors tab Vezérlőelem jelölése
|
Control mark Colors tab Vezérlőelem jelölése
|
||||||
Size: Font Selection view Méret:
|
Size: Font Selection view Méret:
|
||||||
|
Selected list item background Colors tab Kiválasztott listaelem háttere
|
||||||
Panel background Colors tab Panel háttere
|
Panel background Colors tab Panel háttere
|
||||||
Menu font: Font view Menü betütípusa:
|
Menu font: Font view Menü betütípusa:
|
||||||
Colors APRWindow Színek
|
Colors APRWindow Színek
|
||||||
Control background Colors tab Kiválasztás háttere
|
Control background Colors tab Kiválasztás háttere
|
||||||
Inactive window tab Colors tab Inaktív ablak füle
|
Inactive window tab Colors tab Inaktív ablak füle
|
||||||
|
List item text Colors tab Listaelem
|
||||||
Appearance System name Megjelenés
|
Appearance System name Megjelenés
|
||||||
Fixed font: Font view Rögzített szélességű betűtípus:
|
Fixed font: Font view Rögzített szélességű betűtípus:
|
||||||
The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Árvíztűrő tükörfúrógép.
|
The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Árvíztűrő tükörfúrógép.
|
||||||
Reduce colored edges filter strength: AntialiasingSettingsView A színezett betűszélek szűrőjének erősségi szintje:
|
Reduce colored edges filter strength: AntialiasingSettingsView A színezett betűszélek szűrőjének erősségi szintje:
|
||||||
Subpixel based anti-aliasing in combination with glyph hinting is not available in this build of Haiku to avoid possible patent issues. To enable this feature, you have to build Haiku yourself and enable certain options in the libfreetype configuration header. AntialiasingSettingsView A betűkép-körvonalasítással összevont szubpixel-alapú élsimítás nem használható a Haiku ezen kiadásában, mivel lehetséges szabadalmi viták forrása lehet. E funckió használatához magának kell megépítenie saját Haiku-rendszerét és beállítania bizonyos opciókat a libfreetype konfigurációs fejlécében.
|
Subpixel based anti-aliasing in combination with glyph hinting is not available in this build of Haiku to avoid possible patent issues. To enable this feature, you have to build Haiku yourself and enable certain options in the libfreetype configuration header. AntialiasingSettingsView A betűkép-körvonalasítással összevont szubpixel-alapú élsimítás nem használható a Haiku ezen kiadásában, mivel lehetséges szabadalmi viták forrása lehet. E funckió használatához magának kell megépítenie saját Haiku-rendszerét és beállítania bizonyos opciókat a libfreetype konfigurációs fejlécében.
|
||||||
Control text Colors tab Vezérlőelem szövege
|
Control text Colors tab Vezérlőelem szövege
|
||||||
|
Single: DecorSettingsView Egyszeres:
|
||||||
Tooltip text Colors tab Buboréksúgó szövege
|
Tooltip text Colors tab Buboréksúgó szövege
|
||||||
Bold font: Font view Félkövér betű:
|
Bold font: Font view Félkövér betű:
|
||||||
Inactive window border Colors tab Inaktív ablakkeret
|
Inactive window border Colors tab Inaktív ablakkeret
|
||||||
@@ -52,6 +58,7 @@ LCD subpixel AntialiasingSettingsView LCD-szubpixel
|
|||||||
Selected menu item border Colors tab Kiválasztott menüelem szegélye
|
Selected menu item border Colors tab Kiválasztott menüelem szegélye
|
||||||
Strong AntialiasingSettingsView Erős
|
Strong AntialiasingSettingsView Erős
|
||||||
Panel text Colors tab Panel szövege
|
Panel text Colors tab Panel szövege
|
||||||
|
Arrow style DecorSettingsView Nyíl stílusa
|
||||||
Monospaced fonts only AntialiasingSettingsView Csak rögzített szélességű betűtípusok
|
Monospaced fonts only AntialiasingSettingsView Csak rögzített szélességű betűtípusok
|
||||||
Look and feel APRWindow Megjelenés
|
Look and feel APRWindow Megjelenés
|
||||||
Antialiasing menu AntialiasingSettingsView Élsimítási menü
|
Antialiasing menu AntialiasingSettingsView Élsimítási menü
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
1 japanese x-vnd.Haiku-Appearance 1428480647
|
1 japanese x-vnd.Haiku-Appearance 580285868
|
||||||
Plain font: Font view 標準フォント:
|
Plain font: Font view 標準フォント:
|
||||||
Control highlight Colors tab コントロールのハイライト
|
Control highlight Colors tab コントロールのハイライト
|
||||||
Control border Colors tab コントロールの境界
|
Control border Colors tab コントロールの境界
|
||||||
@@ -23,6 +23,7 @@ Tooltip background Colors tab ツールチップの背景
|
|||||||
Selected menu item background Colors tab メニュー選択項目の背景
|
Selected menu item background Colors tab メニュー選択項目の背景
|
||||||
Antialiasing APRWindow アンチエイリアス
|
Antialiasing APRWindow アンチエイリアス
|
||||||
Navigation base Colors tab ナビゲーション
|
Navigation base Colors tab ナビゲーション
|
||||||
|
Selected list item text Colors tab リスト選択項目の文字
|
||||||
Window border Colors tab ウィンドウ枠
|
Window border Colors tab ウィンドウ枠
|
||||||
Window tab text Colors tab ウィンドウタブの文字
|
Window tab text Colors tab ウィンドウタブの文字
|
||||||
Document text Colors tab ドキュメントの文字
|
Document text Colors tab ドキュメントの文字
|
||||||
@@ -30,14 +31,17 @@ Navigation pulse Colors tab ナビゲーションの点滅
|
|||||||
Window decorator: DecorSettingsView ウィンドウデコレーター:
|
Window decorator: DecorSettingsView ウィンドウデコレーター:
|
||||||
Selected menu item text Colors tab メニュー選択項目の文字
|
Selected menu item text Colors tab メニュー選択項目の文字
|
||||||
Menu background Colors tab メニューの背景
|
Menu background Colors tab メニューの背景
|
||||||
|
List background Colors tab リストの背景
|
||||||
OK DecorSettingsView OK
|
OK DecorSettingsView OK
|
||||||
Control mark Colors tab コントロールの選択部
|
Control mark Colors tab コントロールの選択部
|
||||||
Size: Font Selection view サイズ:
|
Size: Font Selection view サイズ:
|
||||||
|
Selected list item background Colors tab リスト選択項目の背景
|
||||||
Panel background Colors tab パネルの背景
|
Panel background Colors tab パネルの背景
|
||||||
Menu font: Font view メニューフォント:
|
Menu font: Font view メニューフォント:
|
||||||
Colors APRWindow 色
|
Colors APRWindow 色
|
||||||
Control background Colors tab コントロールの背景
|
Control background Colors tab コントロールの背景
|
||||||
Inactive window tab Colors tab 非アクティブウィンドウタブ
|
Inactive window tab Colors tab 非アクティブウィンドウタブ
|
||||||
|
List item text Colors tab リスト項目の文字
|
||||||
Appearance System name 外観
|
Appearance System name 外観
|
||||||
Fixed font: Font view 等幅フォント:
|
Fixed font: Font view 等幅フォント:
|
||||||
The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. 古池や A frog jumps in, 水の音。
|
The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. 古池や A frog jumps in, 水の音。
|
||||||
@@ -52,6 +56,7 @@ LCD subpixel AntialiasingSettingsView LCD サブピクセル
|
|||||||
Selected menu item border Colors tab メニュー選択項目の境界
|
Selected menu item border Colors tab メニュー選択項目の境界
|
||||||
Strong AntialiasingSettingsView 強い
|
Strong AntialiasingSettingsView 強い
|
||||||
Panel text Colors tab パネルの文字
|
Panel text Colors tab パネルの文字
|
||||||
|
Arrow style DecorSettingsView 矢印のスタイル
|
||||||
Monospaced fonts only AntialiasingSettingsView 等幅フォントのみ有効
|
Monospaced fonts only AntialiasingSettingsView 等幅フォントのみ有効
|
||||||
Look and feel APRWindow 外観
|
Look and feel APRWindow 外観
|
||||||
Antialiasing menu AntialiasingSettingsView アンチエイリアスメニュー
|
Antialiasing menu AntialiasingSettingsView アンチエイリアスメニュー
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
1 portuguese (brazil) x-vnd.Haiku-Appearance 1428480647
|
1 portuguese (brazil) x-vnd.Haiku-Appearance 2950529393
|
||||||
Plain font: Font view Fonte plana:
|
Plain font: Font view Fonte plana:
|
||||||
Control highlight Colors tab Realce do controle
|
Control highlight Colors tab Realce do controle
|
||||||
Control border Colors tab Borda do controle
|
Control border Colors tab Borda do controle
|
||||||
@@ -23,27 +23,33 @@ Tooltip background Colors tab Plano de fundo das dicas
|
|||||||
Selected menu item background Colors tab Plano de fundo do item de menu selecionado
|
Selected menu item background Colors tab Plano de fundo do item de menu selecionado
|
||||||
Antialiasing APRWindow Suavização de serrilhado
|
Antialiasing APRWindow Suavização de serrilhado
|
||||||
Navigation base Colors tab Base de navegação
|
Navigation base Colors tab Base de navegação
|
||||||
|
Selected list item text Colors tab Texto do item da lista selecionado
|
||||||
Window border Colors tab Margem da janela
|
Window border Colors tab Margem da janela
|
||||||
|
Double: DecorSettingsView Duplo:
|
||||||
Window tab text Colors tab Texto da aba da Janela
|
Window tab text Colors tab Texto da aba da Janela
|
||||||
Document text Colors tab Texto do documento
|
Document text Colors tab Texto do documento
|
||||||
Navigation pulse Colors tab Navegação de pulso
|
Navigation pulse Colors tab Navegação de pulso
|
||||||
Window decorator: DecorSettingsView Decorador de janela:
|
Window decorator: DecorSettingsView Decorador de janela:
|
||||||
Selected menu item text Colors tab Texto do item do menu selecionado
|
Selected menu item text Colors tab Texto do item do menu selecionado
|
||||||
Menu background Colors tab Plano de fundo de menu
|
Menu background Colors tab Plano de fundo de menu
|
||||||
|
List background Colors tab Plano de fundo da lista
|
||||||
OK DecorSettingsView OK
|
OK DecorSettingsView OK
|
||||||
Control mark Colors tab Marca de controle
|
Control mark Colors tab Marca de controle
|
||||||
Size: Font Selection view Tamanho:
|
Size: Font Selection view Tamanho:
|
||||||
|
Selected list item background Colors tab Plano de fundo do item de lista selecionado
|
||||||
Panel background Colors tab Plano de fundo do painel
|
Panel background Colors tab Plano de fundo do painel
|
||||||
Menu font: Font view Fonte de menu:
|
Menu font: Font view Fonte de menu:
|
||||||
Colors APRWindow Cores
|
Colors APRWindow Cores
|
||||||
Control background Colors tab Plano de fundo do controle
|
Control background Colors tab Plano de fundo do controle
|
||||||
Inactive window tab Colors tab Aba da janela inativa
|
Inactive window tab Colors tab Aba da janela inativa
|
||||||
|
List item text Colors tab Texto do item da lista
|
||||||
Appearance System name Aparência
|
Appearance System name Aparência
|
||||||
Fixed font: Font view Fonte de largura fixa:
|
Fixed font: Font view Fonte de largura fixa:
|
||||||
The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Yuri viu um pequeno jabuti xereta e dez cegonhas felizes comendo kiwi.
|
The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Yuri viu um pequeno jabuti xereta e dez cegonhas felizes comendo kiwi.
|
||||||
Reduce colored edges filter strength: AntialiasingSettingsView Reduzir a força do filtro de bordas coloridas:
|
Reduce colored edges filter strength: AntialiasingSettingsView Reduzir a força do filtro de bordas coloridas:
|
||||||
Subpixel based anti-aliasing in combination with glyph hinting is not available in this build of Haiku to avoid possible patent issues. To enable this feature, you have to build Haiku yourself and enable certain options in the libfreetype configuration header. AntialiasingSettingsView A possibilidade de usar o antiserrilhamento baseado em Subpíxeis juntamente com o alisamento de glifos não está disponível nesta versão do Haiku para evitar possíveis problemas com patentes. Para habilitar esta funcionalidade, você terá que compilar o Haiku e ativar certas opções no cabeçalho de configuração da libfreetype.
|
Subpixel based anti-aliasing in combination with glyph hinting is not available in this build of Haiku to avoid possible patent issues. To enable this feature, you have to build Haiku yourself and enable certain options in the libfreetype configuration header. AntialiasingSettingsView A possibilidade de usar o antiserrilhamento baseado em Subpíxeis juntamente com o alisamento de glifos não está disponível nesta versão do Haiku para evitar possíveis problemas com patentes. Para habilitar esta funcionalidade, você terá que compilar o Haiku e ativar certas opções no cabeçalho de configuração da libfreetype.
|
||||||
Control text Colors tab Texto do controle
|
Control text Colors tab Texto do controle
|
||||||
|
Single: DecorSettingsView Único:
|
||||||
Tooltip text Colors tab Texto da dica
|
Tooltip text Colors tab Texto da dica
|
||||||
Bold font: Font view Negrito:
|
Bold font: Font view Negrito:
|
||||||
Inactive window border Colors tab Margem inativa de janela
|
Inactive window border Colors tab Margem inativa de janela
|
||||||
@@ -52,6 +58,7 @@ LCD subpixel AntialiasingSettingsView Subpixel LCD
|
|||||||
Selected menu item border Colors tab Borda do item de menu selecionado
|
Selected menu item border Colors tab Borda do item de menu selecionado
|
||||||
Strong AntialiasingSettingsView Forte
|
Strong AntialiasingSettingsView Forte
|
||||||
Panel text Colors tab Texto de janela de diálogo
|
Panel text Colors tab Texto de janela de diálogo
|
||||||
|
Arrow style DecorSettingsView Estilo da seta
|
||||||
Monospaced fonts only AntialiasingSettingsView Apenas fontes monoespaçadas
|
Monospaced fonts only AntialiasingSettingsView Apenas fontes monoespaçadas
|
||||||
Look and feel APRWindow Olhar e sentir
|
Look and feel APRWindow Olhar e sentir
|
||||||
Antialiasing menu AntialiasingSettingsView Menu de suavização de serrilhado
|
Antialiasing menu AntialiasingSettingsView Menu de suavização de serrilhado
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
1 swedish x-vnd.Haiku-Appearance 1428480647
|
1 swedish x-vnd.Haiku-Appearance 2950529393
|
||||||
Plain font: Font view Vanlig font:
|
Plain font: Font view Vanlig font:
|
||||||
Control highlight Colors tab Framhävd kontroll
|
Control highlight Colors tab Framhävd kontroll
|
||||||
Control border Colors tab Kontrollkant
|
Control border Colors tab Kontrollkant
|
||||||
@@ -23,27 +23,33 @@ Tooltip background Colors tab Hjälprutsbakgrund
|
|||||||
Selected menu item background Colors tab Bakgrund för valt menyalternativ
|
Selected menu item background Colors tab Bakgrund för valt menyalternativ
|
||||||
Antialiasing APRWindow Kantutjämning
|
Antialiasing APRWindow Kantutjämning
|
||||||
Navigation base Colors tab Navigeringsbas
|
Navigation base Colors tab Navigeringsbas
|
||||||
|
Selected list item text Colors tab Textfärg för valt menyalternativ
|
||||||
Window border Colors tab Fönsterkant
|
Window border Colors tab Fönsterkant
|
||||||
|
Double: DecorSettingsView Dubbel
|
||||||
Window tab text Colors tab Fönsterflik text
|
Window tab text Colors tab Fönsterflik text
|
||||||
Document text Colors tab Dokument text
|
Document text Colors tab Dokument text
|
||||||
Navigation pulse Colors tab Navigeringspuls
|
Navigation pulse Colors tab Navigeringspuls
|
||||||
Window decorator: DecorSettingsView Fönsterdekor:
|
Window decorator: DecorSettingsView Fönsterdekor:
|
||||||
Selected menu item text Colors tab Textfärg för valt menyalternativ
|
Selected menu item text Colors tab Textfärg för valt menyalternativ
|
||||||
Menu background Colors tab Menybakgrund
|
Menu background Colors tab Menybakgrund
|
||||||
|
List background Colors tab Lista bakgrund
|
||||||
OK DecorSettingsView OK
|
OK DecorSettingsView OK
|
||||||
Control mark Colors tab Kontroll märke
|
Control mark Colors tab Kontroll märke
|
||||||
Size: Font Selection view Storlek:
|
Size: Font Selection view Storlek:
|
||||||
|
Selected list item background Colors tab Bakgrund för valt menyalternativ
|
||||||
Panel background Colors tab Panelbakgrund
|
Panel background Colors tab Panelbakgrund
|
||||||
Menu font: Font view Menu font:
|
Menu font: Font view Menu font:
|
||||||
Colors APRWindow Färger
|
Colors APRWindow Färger
|
||||||
Control background Colors tab Kontrollbakgrund
|
Control background Colors tab Kontrollbakgrund
|
||||||
Inactive window tab Colors tab Flikfärg för inaktiva fönster
|
Inactive window tab Colors tab Flikfärg för inaktiva fönster
|
||||||
|
List item text Colors tab List objekt text
|
||||||
Appearance System name Utseende
|
Appearance System name Utseende
|
||||||
Fixed font: Font view Fixerad font:
|
Fixed font: Font view Fixerad font:
|
||||||
The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Flygande bäckasiner söka strax hwila på mjuka tuvor.
|
The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Flygande bäckasiner söka strax hwila på mjuka tuvor.
|
||||||
Reduce colored edges filter strength: AntialiasingSettingsView Minska färgintensitet på färgade kanter:
|
Reduce colored edges filter strength: AntialiasingSettingsView Minska färgintensitet på färgade kanter:
|
||||||
Subpixel based anti-aliasing in combination with glyph hinting is not available in this build of Haiku to avoid possible patent issues. To enable this feature, you have to build Haiku yourself and enable certain options in the libfreetype configuration header. AntialiasingSettingsView Subpixel-baserad kantutjämning i kombination med betoning av typsnitt är inte tillgängligt i färdigbyggda Haiku för att undvika patentproblem. För att aktivera denna funktionalitet, måste du själv kompilera Haiku och välja särskilda val i libfreetypes konfigurationshuvud.
|
Subpixel based anti-aliasing in combination with glyph hinting is not available in this build of Haiku to avoid possible patent issues. To enable this feature, you have to build Haiku yourself and enable certain options in the libfreetype configuration header. AntialiasingSettingsView Subpixel-baserad kantutjämning i kombination med betoning av typsnitt är inte tillgängligt i färdigbyggda Haiku för att undvika patentproblem. För att aktivera denna funktionalitet, måste du själv kompilera Haiku och välja särskilda val i libfreetypes konfigurationshuvud.
|
||||||
Control text Colors tab Kontrolltext
|
Control text Colors tab Kontrolltext
|
||||||
|
Single: DecorSettingsView Enkel:
|
||||||
Tooltip text Colors tab Hjälprutstext
|
Tooltip text Colors tab Hjälprutstext
|
||||||
Bold font: Font view Fetstil
|
Bold font: Font view Fetstil
|
||||||
Inactive window border Colors tab Inaktiverad fönsterkant
|
Inactive window border Colors tab Inaktiverad fönsterkant
|
||||||
@@ -52,6 +58,7 @@ LCD subpixel AntialiasingSettingsView LCD-subpixel
|
|||||||
Selected menu item border Colors tab Kantfärg för valt menyalternativ
|
Selected menu item border Colors tab Kantfärg för valt menyalternativ
|
||||||
Strong AntialiasingSettingsView Framhävd
|
Strong AntialiasingSettingsView Framhävd
|
||||||
Panel text Colors tab Paneltext
|
Panel text Colors tab Paneltext
|
||||||
|
Arrow style DecorSettingsView Pil stil
|
||||||
Monospaced fonts only AntialiasingSettingsView Endast typsnitt med fast bredd
|
Monospaced fonts only AntialiasingSettingsView Endast typsnitt med fast bredd
|
||||||
Look and feel APRWindow Utseende och beteende
|
Look and feel APRWindow Utseende och beteende
|
||||||
Antialiasing menu AntialiasingSettingsView Kantutjämningsmeny
|
Antialiasing menu AntialiasingSettingsView Kantutjämningsmeny
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
1 german x-vnd.Haiku-debug_server 3203333611
|
1 german x-vnd.Haiku-debug_server 945172012
|
||||||
Debug DebugServer Debug
|
Debug DebugServer Debug
|
||||||
|
Kill DebugServer Beenden erzwingen
|
||||||
The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer Die Anwendung:\n\n %app\n\nist auf einen Fehler gestoßen und kann nicht weiter ausgeführt werden. Haiku wird die Anwendung beenden und das System säubern.
|
The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer Die Anwendung:\n\n %app\n\nist auf einen Fehler gestoßen und kann nicht weiter ausgeführt werden. Haiku wird die Anwendung beenden und das System säubern.
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
1 hungarian x-vnd.Haiku-debug_server 3203333611
|
1 hungarian x-vnd.Haiku-debug_server 945172012
|
||||||
Debug DebugServer Hibakeresés
|
Debug DebugServer Hibakeresés
|
||||||
|
Kill DebugServer Megszakítás
|
||||||
The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer A következő program:\n\n %app\n\nhibába ütközött, és nem tud tovább futni. A Haiku leállítja a programot.
|
The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer A következő program:\n\n %app\n\nhibába ütközött, és nem tud tovább futni. A Haiku leállítja a programot.
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
1 japanese x-vnd.Haiku-debug_server 3203333611
|
1 japanese x-vnd.Haiku-debug_server 945172012
|
||||||
Debug DebugServer デバッグ
|
Debug DebugServer デバッグ
|
||||||
|
Kill DebugServer 強制終了
|
||||||
The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer アプリケーション:\n\n %app\n\nは、エラーのため続行できません。Haiku はアプリケーションを終了し、後始末をします。
|
The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer アプリケーション:\n\n %app\n\nは、エラーのため続行できません。Haiku はアプリケーションを終了し、後始末をします。
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
1 portuguese (brazil) x-vnd.Haiku-debug_server 3203333611
|
1 portuguese (brazil) x-vnd.Haiku-debug_server 945172012
|
||||||
Debug DebugServer Depurar
|
Debug DebugServer Depurar
|
||||||
|
Kill DebugServer Matar
|
||||||
The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer A aplicação:\n\n %app\n\nencontrou um erro que a impede de continuar. Haiku irá fechar a aplicação.
|
The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer A aplicação:\n\n %app\n\nencontrou um erro que a impede de continuar. Haiku irá fechar a aplicação.
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
1 swedish x-vnd.Haiku-debug_server 3203333611
|
1 swedish x-vnd.Haiku-debug_server 945172012
|
||||||
Debug DebugServer Felsök
|
Debug DebugServer Felsök
|
||||||
|
Kill DebugServer Döda
|
||||||
The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer Programmet:\n\n %app\n\nhar stött på ett fel som förhindrar den från att fortsätta. Haiku kommer att avsluta programmet och stöda upp.
|
The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer Programmet:\n\n %app\n\nhar stött på ett fel som förhindrar den från att fortsätta. Haiku kommer att avsluta programmet och stöda upp.
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2009, Haiku, Inc. All rights reserved.
|
* Copyright 2009-2012, Haiku, Inc. All rights reserved.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
#ifndef _MEDIA_NODE_H
|
#ifndef _MEDIA_NODE_H
|
||||||
@@ -92,7 +92,7 @@ struct media_request_info {
|
|||||||
what_code what;
|
what_code what;
|
||||||
int32 change_tag;
|
int32 change_tag;
|
||||||
status_t status;
|
status_t status;
|
||||||
int32 cookie;
|
void* cookie;
|
||||||
void* user_data;
|
void* user_data;
|
||||||
media_source source;
|
media_source source;
|
||||||
media_destination destination;
|
media_destination destination;
|
||||||
@@ -115,11 +115,13 @@ struct media_node_attribute {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
namespace BPrivate { namespace media {
|
namespace BPrivate {
|
||||||
|
namespace media {
|
||||||
class TimeSourceObject;
|
class TimeSourceObject;
|
||||||
class SystemTimeSourceObject;
|
class SystemTimeSourceObject;
|
||||||
class BMediaRosterEx;
|
class BMediaRosterEx;
|
||||||
} } // BPrivate::media
|
}
|
||||||
|
} // BPrivate::media
|
||||||
|
|
||||||
|
|
||||||
/*! BMediaNode is the indirect base class for all Media Kit participants.
|
/*! BMediaNode is the indirect base class for all Media Kit participants.
|
||||||
@@ -338,4 +340,5 @@ private:
|
|||||||
// not to be confused with _mChangeCount
|
// not to be confused with _mChangeCount
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif // _MEDIA_NODE_H
|
#endif // _MEDIA_NODE_H
|
||||||
|
|||||||
@@ -18,21 +18,21 @@
|
|||||||
/*
|
/*
|
||||||
* L1 defines for the page directory (page table walk methods)
|
* L1 defines for the page directory (page table walk methods)
|
||||||
*/
|
*/
|
||||||
#define MMU_L1_TYPE_FAULT 0x0
|
#define ARM_MMU_L1_TYPE_FAULT 0x0
|
||||||
// MMU Fault
|
// MMU Fault
|
||||||
// 31 2 10
|
// 31 2 10
|
||||||
// | |00|
|
// | |00|
|
||||||
#define MMU_L1_TYPE_SECTION 0x2
|
#define ARM_MMU_L1_TYPE_SECTION 0x2
|
||||||
// Single step table walk, 4096 entries
|
// Single step table walk, 4096 entries
|
||||||
// 1024K pages, 16K consumed
|
// 1024K pages, 16K consumed
|
||||||
// 31 20 19 12 11 10 9 8 5 432 10
|
// 31 20 19 12 11 10 9 8 5 432 10
|
||||||
// | page table address | 0? | AP |0| domain |1CB|10|
|
// | page table address | 0? | AP |0| domain |1CB|10|
|
||||||
#define MMU_L1_TYPE_FINE 0x3
|
#define ARM_MMU_L1_TYPE_FINE 0x3
|
||||||
// Three(?) step table walk, 1024 entries
|
// Three(?) step table walk, 1024 entries
|
||||||
// 1K, 4K, 64K pages, 4K consumed
|
// 1K, 4K, 64K pages, 4K consumed
|
||||||
// 31 12 11 9 8 5 432 10
|
// 31 12 11 9 8 5 432 10
|
||||||
// | page table address | 0? | domain |100|11|
|
// | page table address | 0? | domain |100|11|
|
||||||
#define MMU_L1_TYPE_COARSE 0x1
|
#define ARM_MMU_L1_TYPE_COARSE 0x1
|
||||||
// Two step table walk, 256 entries
|
// Two step table walk, 256 entries
|
||||||
// 4K(Haiku), 64K pages, 1K consumed
|
// 4K(Haiku), 64K pages, 1K consumed
|
||||||
// 31 10 9 8 5 432 10
|
// 31 10 9 8 5 432 10
|
||||||
@@ -52,37 +52,48 @@
|
|||||||
* I will use the old format...
|
* I will use the old format...
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MMU_L2_TYPE_SMALLEXT 0x3
|
#define ARM_MMU_L2_TYPE_LARGE 0x1
|
||||||
|
#define ARM_MMU_L2_TYPE_SMALLEXT 0x3
|
||||||
|
|
||||||
/* for new format entries (cortex-a8) */
|
/* for new format entries (cortex-a8) */
|
||||||
#define MMU_L2_TYPE_SMALLNEW 0x2
|
#define ARM_MMU_L2_TYPE_SMALLNEW 0x2
|
||||||
|
|
||||||
// for B C and TEX see ARM arm B4-11
|
// for B C and TEX see ARM arm B4-11
|
||||||
#define MMU_L2_FLAG_B 0x4
|
#define ARM_MMU_L2_FLAG_B 0x4
|
||||||
#define MMU_L2_FLAG_C 0x8
|
#define ARM_MMU_L2_FLAG_C 0x8
|
||||||
#define MMU_L2_FLAG_TEX 0 // use 0b000 as TEX
|
#define ARM_MMU_L2_FLAG_TEX 0 // use 0b000 as TEX
|
||||||
#define MMU_L2_FLAG_AP_RW 0x30 // allow read and write for user and system
|
#define ARM_MMU_L2_FLAG_AP_RW 0x30
|
||||||
// #define MMU_L2_FLAG_AP_
|
// allow read and write for user and system
|
||||||
|
|
||||||
|
#define ARM_MMU_L1_TABLE_ENTRY_COUNT 4096
|
||||||
|
#define ARM_MMU_L1_TABLE_SIZE (ARM_MMU_L1_TABLE_ENTRY_COUNT \
|
||||||
|
* sizeof(uint32))
|
||||||
|
|
||||||
#define MMU_L1_TABLE_SIZE (4096 * 4)
|
#define ARM_MMU_L2_COARSE_ENTRY_COUNT 256
|
||||||
//4096 entries (one entry per MB) -> 16KB
|
#define ARM_MMU_L2_COARSE_TABLE_SIZE (ARM_MMU_L2_COARSE_ENTRY_COUNT \
|
||||||
#define MMU_L2_COARSE_TABLE_SIZE (256 * 4)
|
* sizeof(uint32))
|
||||||
//256 entries (one entry per 4KB) -> 1KB
|
|
||||||
|
|
||||||
|
#define ARM_MMU_L2_FINE_ENTRY_COUNT 1024
|
||||||
|
#define ARM_MMU_L2_FINE_TABLE_SIZE (ARM_MMU_L2_FINE_ENTRY_COUNT \
|
||||||
|
* sizeof(uint32))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* definitions for CP15 r1
|
* definitions for CP15 r1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define CR_R1_MMU 0x1 // enable MMU
|
#define CR_R1_MMU 0x1 // enable MMU
|
||||||
#define CP_R1_XP 0x800000 // if XP=0 then use backwards comaptible
|
#define CP_R1_XP 0x800000
|
||||||
// translation tables
|
// if XP=0 then use backwards comaptible translation tables
|
||||||
|
|
||||||
|
|
||||||
#define VADDR_TO_PDENT(va) ((va) >> 20)
|
#define VADDR_TO_PDENT(va) ((va) >> 20)
|
||||||
#define VADDR_TO_PTENT(va) (((va) & 0xff000) >> 12)
|
#define VADDR_TO_PTENT(va) (((va) & 0xff000) >> 12)
|
||||||
#define VADDR_TO_PGOFF(va) ((va) & 0x0fff)
|
#define VADDR_TO_PGOFF(va) ((va) & 0x0fff)
|
||||||
|
|
||||||
#define ARM_PDE_ADDRESS_MASK 0xfffffc00
|
#define ARM_PDE_ADDRESS_MASK 0xfffffc00
|
||||||
|
#define ARM_PDE_TYPE_MASK 0x00000003
|
||||||
|
|
||||||
#define ARM_PTE_ADDRESS_MASK 0xfffff000
|
#define ARM_PTE_ADDRESS_MASK 0xfffff000
|
||||||
|
#define ARM_PTE_TYPE_MASK 0x00000003
|
||||||
|
|
||||||
#endif /* _ARCH_ARM_ARM_MMU_H */
|
#endif /* _ARCH_ARM_ARM_MMU_H */
|
||||||
|
|||||||
@@ -46,9 +46,10 @@ status_t vesa_set_dpms_mode(uint32 dpmsFlags);
|
|||||||
|
|
||||||
// cursor
|
// cursor
|
||||||
status_t vesa_set_cursor_shape(uint16 width, uint16 height, uint16 hotX,
|
status_t vesa_set_cursor_shape(uint16 width, uint16 height, uint16 hotX,
|
||||||
uint16 hotY, uint8 *andMask, uint8 *xorMask);
|
uint16 hotY, const uint8 *andMask, const uint8 *xorMask);
|
||||||
status_t vesa_set_cursor_bitmap(uint16 width, uint16 height, uint16 hotX,
|
status_t vesa_set_cursor_bitmap(uint16 width, uint16 height, uint16 hotX,
|
||||||
uint16 hotY, uint32 colorSpace, uint16 bytesPerRow, uint8* bitmapData);
|
uint16 hotY, color_space colorSpace, uint16 bytesPerRow,
|
||||||
|
const uint8* bitmapData);
|
||||||
void vesa_move_cursor(uint16 x, uint16 y);
|
void vesa_move_cursor(uint16 x, uint16 y);
|
||||||
void vesa_show_cursor(bool is_visible);
|
void vesa_show_cursor(bool is_visible);
|
||||||
|
|
||||||
|
|||||||
@@ -33,11 +33,21 @@
|
|||||||
# define TRACE(x) ;
|
# define TRACE(x) ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _USER_MODE
|
||||||
|
# define ERROR(x) printf x
|
||||||
|
#else
|
||||||
|
# define ERROR(x) dprintf x
|
||||||
|
#endif
|
||||||
|
|
||||||
using std::nothrow;
|
using std::nothrow;
|
||||||
|
|
||||||
// Maximal number of logical partitions per extended partition we allow.
|
// Maximal number of logical partitions per extended partition we allow.
|
||||||
static const int32 kMaxLogicalPartitionCount = 128;
|
static const int32 kMaxLogicalPartitionCount = 128;
|
||||||
|
|
||||||
|
// Constants used to verify if a disk uses a GPT
|
||||||
|
static const int32 kGPTSignatureSize = 8;
|
||||||
|
static const char kGPTSignature[8] = { 'E', 'F', 'I', ' ', 'P', 'A', 'R', 'T' };
|
||||||
|
|
||||||
|
|
||||||
// constructor
|
// constructor
|
||||||
PartitionMapParser::PartitionMapParser(int deviceFD, off_t sessionOffset,
|
PartitionMapParser::PartitionMapParser(int deviceFD, off_t sessionOffset,
|
||||||
@@ -295,20 +305,32 @@ PartitionMapParser::_ReadPartitionTable(off_t offset, partition_table* table)
|
|||||||
if (table == NULL)
|
if (table == NULL)
|
||||||
table = fPartitionTable;
|
table = fPartitionTable;
|
||||||
|
|
||||||
status_t error = B_OK;
|
// Read the partition table from the device into the table structure
|
||||||
|
ssize_t bytesRead = read_pos(fDeviceFD, fSessionOffset + offset,
|
||||||
// read
|
table, toRead);
|
||||||
if (read_pos(fDeviceFD, fSessionOffset + offset, table, toRead) != toRead) {
|
if (bytesRead != (ssize_t)toRead) {
|
||||||
#ifndef _BOOT_MODE
|
TRACE(("intel: _ReadPartitionTable(): reading the partition "
|
||||||
error = errno;
|
"table failed: %lx\n", errno));
|
||||||
if (error == B_OK)
|
return bytesRead < 0 ? errno : B_IO_ERROR;
|
||||||
error = B_IO_ERROR;
|
}
|
||||||
#else
|
|
||||||
error = B_IO_ERROR;
|
// check for GPT signature "EFI PART"
|
||||||
#endif
|
// located in the 8bytes following the mbr
|
||||||
TRACE(("intel: _ReadPartitionTable(): reading the partition table "
|
toRead = kGPTSignatureSize;
|
||||||
"failed: %lx\n", error));
|
char gptSignature[8];
|
||||||
}
|
bytesRead = read_pos(fDeviceFD, fSessionOffset + offset
|
||||||
return error;
|
+ sizeof(partition_table), &gptSignature, toRead);
|
||||||
|
if (bytesRead != (ssize_t)toRead) {
|
||||||
|
TRACE(("intel: _ReadPartitionTable(): checking for GPT "
|
||||||
|
"signature failed: %lx\n", errno));
|
||||||
|
return bytesRead < 0 ? errno : B_IO_ERROR;
|
||||||
|
}
|
||||||
|
if (memcmp(gptSignature, kGPTSignature, kGPTSignatureSize) == 0) {
|
||||||
|
ERROR(("Error: Disk is GPT-formatted: "
|
||||||
|
"GPT disks are currently unsupported.\n"));
|
||||||
|
return B_BAD_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -48,27 +48,29 @@ extern "C" {
|
|||||||
#define ERROR(x...) printf("GalliumContext: " x)
|
#define ERROR(x...) printf("GalliumContext: " x)
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
static void
|
static void
|
||||||
hgl_viewport(struct gl_context* glctx, GLint x, GLint y,
|
hgl_viewport(struct gl_context* glContext, GLint x, GLint y,
|
||||||
GLsizei width, GLsizei height)
|
GLsizei width, GLsizei height)
|
||||||
{
|
{
|
||||||
TRACE("%s(glctx: %p, x: %d, y: %d, width: %d, height: %d\n",
|
TRACE("%s(glContext: %p, x: %d, y: %d, width: %d, height: %d\n", __func__,
|
||||||
__FUNCTION__, glctx, x, y, width, height);
|
glContext, x, y, width, height);
|
||||||
struct hgl_context *context = (struct hgl_context*)glctx->DriverCtx;
|
struct hgl_context *context = (struct hgl_context*)glContext->DriverCtx;
|
||||||
|
|
||||||
int32 w, h;
|
int32 bitmapWidth;
|
||||||
get_bitmap_size(context->bitmap, &w, &h);
|
int32 bitmapHeight;
|
||||||
|
|
||||||
#if 0
|
get_bitmap_size(context->bitmap, &bitmapWidth, &bitmapHeight);
|
||||||
// TODO: mesa_resize_framebuffer? Need to investigate where this went
|
|
||||||
if (context->draw)
|
if (width != bitmapWidth || height != bitmapHeight) {
|
||||||
st_resize_framebuffer(context->draw->stfb, w, h);
|
struct gl_framebuffer *draw = glContext->WinSysDrawBuffer;
|
||||||
if (context->read)
|
struct gl_framebuffer *read = glContext->WinSysReadBuffer;
|
||||||
st_resize_framebuffer(context->read->stfb, w, h);
|
|
||||||
#endif
|
if (draw)
|
||||||
|
_mesa_resize_framebuffer(glContext, draw, bitmapWidth, bitmapHeight);
|
||||||
|
if (read)
|
||||||
|
_mesa_resize_framebuffer(glContext, read, bitmapWidth, bitmapHeight);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -233,7 +235,7 @@ GalliumContext::CreateContext(Bitmap *bitmap)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set up the initial things out context needs
|
// Set up the initial things our context needs
|
||||||
context->bitmap = bitmap;
|
context->bitmap = bitmap;
|
||||||
context->colorSpace = get_bitmap_color_space(bitmap);
|
context->colorSpace = get_bitmap_color_space(bitmap);
|
||||||
context->draw = NULL;
|
context->draw = NULL;
|
||||||
@@ -293,6 +295,15 @@ GalliumContext::CreateContext(Bitmap *bitmap)
|
|||||||
struct st_visual stVisual;
|
struct st_visual stVisual;
|
||||||
hgl_fill_st_visual(&stVisual, glVisual);
|
hgl_fill_st_visual(&stVisual, glVisual);
|
||||||
|
|
||||||
|
context->draw = new GalliumFramebuffer(&stVisual);
|
||||||
|
context->read = new GalliumFramebuffer(&stVisual);
|
||||||
|
|
||||||
|
if (!context->draw || !context->read) {
|
||||||
|
ERROR("%s: Problem allocating framebuffer!\n", __func__);
|
||||||
|
_mesa_destroy_visual(glVisual);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
// We need to assign the screen *before* calling st_api create_context
|
// We need to assign the screen *before* calling st_api create_context
|
||||||
context->manager->screen = fScreen;
|
context->manager->screen = fScreen;
|
||||||
|
|
||||||
@@ -344,12 +355,16 @@ GalliumContext::CreateContext(Bitmap *bitmap)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Init Gallium3D Post Processing
|
||||||
|
context->postProcess = pp_init(fScreen, context->postProcessEnable);
|
||||||
|
|
||||||
assert(!context->st->st_manager_private);
|
assert(!context->st->st_manager_private);
|
||||||
context->st->st_manager_private = (void*)context;
|
context->st->st_manager_private = (void*)context;
|
||||||
|
|
||||||
// TODO!
|
struct st_context *stContext = (struct st_context*)context->st;
|
||||||
//context->st->ctx->DriverCtx = context;
|
|
||||||
//context->st->ctx->Driver.Viewport = hgl_viewport;
|
stContext->ctx->DriverCtx = context;
|
||||||
|
stContext->ctx->Driver.Viewport = hgl_viewport;
|
||||||
|
|
||||||
// TODO: Closely review this next context logic...
|
// TODO: Closely review this next context logic...
|
||||||
context_id contextNext = -1;
|
context_id contextNext = -1;
|
||||||
@@ -394,6 +409,15 @@ GalliumContext::DestroyContext(context_id contextID)
|
|||||||
fContext[contextID]->st->destroy(fContext[contextID]->st);
|
fContext[contextID]->st->destroy(fContext[contextID]->st);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fContext[contextID]->postProcess)
|
||||||
|
pp_free(fContext[contextID]->postProcess);
|
||||||
|
|
||||||
|
// Delete framebuffer objects
|
||||||
|
if (fContext[contextID]->read)
|
||||||
|
delete fContext[contextID]->read;
|
||||||
|
if (fContext[contextID]->draw)
|
||||||
|
delete fContext[contextID]->draw;
|
||||||
|
|
||||||
if (fContext[contextID]->manager)
|
if (fContext[contextID]->manager)
|
||||||
FREE(fContext[contextID]->manager);
|
FREE(fContext[contextID]->manager);
|
||||||
|
|
||||||
@@ -437,11 +461,20 @@ GalliumContext::SetCurrentContext(Bitmap *bitmap, context_id contextID)
|
|||||||
ST_FLUSH_FRONT, NULL);
|
ST_FLUSH_FRONT, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: WinSysDrawBuffer & WinSysReadBuffer?
|
// We need to lock and unlock framebuffers before accessing them
|
||||||
api->make_current(context->api, context->st, context->read, context->draw);
|
context->draw->Lock();
|
||||||
|
context->read->Lock();
|
||||||
|
api->make_current(context->api, context->st, context->draw->fBuffer,
|
||||||
|
context->read->fBuffer);
|
||||||
|
context->draw->Unlock();
|
||||||
|
context->read->Unlock();
|
||||||
|
|
||||||
|
// TODO: Init textures before post-processing them
|
||||||
// TODO: Anything else? st_api_make_current
|
#if 0
|
||||||
|
pp_init_fbos(context->postProcess,
|
||||||
|
context->textures[ST_ATTACHMENT_BACK_LEFT]->width0,
|
||||||
|
context->textures[ST_ATTACHMENT_BACK_LEFT]->height0);
|
||||||
|
#endif
|
||||||
|
|
||||||
context->bitmap = bitmap;
|
context->bitmap = bitmap;
|
||||||
//context->st->pipe->priv = context;
|
//context->st->pipe->priv = context;
|
||||||
@@ -464,23 +497,35 @@ GalliumContext::SwapBuffers(context_id contextID)
|
|||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
//pipe_mutex_lock(context->draw->mutex);
|
|
||||||
|
|
||||||
// TODO: Where did st_notify_swapbuffers go?
|
// TODO: Where did st_notify_swapbuffers go?
|
||||||
//st_notify_swapbuffers(context->draw->stfb);
|
//st_notify_swapbuffers(context->draw->stfb);
|
||||||
|
|
||||||
// TODO: Where did st_get_framebuffer_surface go?
|
|
||||||
//struct pipe_surface *surface;
|
|
||||||
//st_get_framebuffer_surface(context->draw->stfb, ST_SURFACE_BACK_LEFT,
|
|
||||||
// &surface);
|
|
||||||
|
|
||||||
context->st->flush(context->st, ST_FLUSH_FRONT, NULL);
|
context->st->flush(context->st, ST_FLUSH_FRONT, NULL);
|
||||||
|
|
||||||
// TODO: Flush the frontbuffer!
|
struct st_context *stContext = (struct st_context*)context->st;
|
||||||
//hsp_dev->hsp_winsys->flush_frontbuffer(hsp_dev->screen, surface,
|
|
||||||
// context->bitmap);
|
|
||||||
|
|
||||||
//pipe_mutex_unlock(context->draw->mutex);
|
unsigned nColorBuffers = stContext->state.framebuffer.nr_cbufs;
|
||||||
|
for (unsigned i = 0; i < nColorBuffers; i++) {
|
||||||
return true;
|
pipe_surface* surface = stContext->state.framebuffer.cbufs[i];
|
||||||
|
if (!surface) {
|
||||||
|
ERROR("%s: Color buffer %d invalid!\n", __func__, i);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
TRACE("%s: Flushing color buffer #%d\n", __func__, i);
|
||||||
|
|
||||||
|
// We pass our destination bitmap to flush_fronbuffer which passes it
|
||||||
|
// to the private winsys display call.
|
||||||
|
fScreen->flush_frontbuffer(fScreen, surface->texture, 0, 0,
|
||||||
|
context->bitmap);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
// TODO... should we flush the z stencil buffer?
|
||||||
|
pipe_surface* zSurface = stContext->state.framebuffer.zsbuf;
|
||||||
|
fScreen->flush_frontbuffer(fScreen, surface->texture, 0, 0,
|
||||||
|
context->bitmap);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,10 +13,11 @@ extern "C" {
|
|||||||
#include "state_tracker/st_api.h"
|
#include "state_tracker/st_api.h"
|
||||||
#include "pipe/p_compiler.h"
|
#include "pipe/p_compiler.h"
|
||||||
#include "pipe/p_screen.h"
|
#include "pipe/p_screen.h"
|
||||||
|
#include "postprocess/filters.h"
|
||||||
#include "os/os_thread.h"
|
#include "os/os_thread.h"
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "bitmap_wrapper.h"
|
#include "bitmap_wrapper.h"
|
||||||
|
#include "GalliumFramebuffer.h"
|
||||||
|
|
||||||
|
|
||||||
#define CONTEXT_MAX 32
|
#define CONTEXT_MAX 32
|
||||||
@@ -37,12 +38,20 @@ struct hgl_context
|
|||||||
// State Tracker Manager
|
// State Tracker Manager
|
||||||
struct st_context_iface* st;
|
struct st_context_iface* st;
|
||||||
// State Tracker Interface Object
|
// State Tracker Interface Object
|
||||||
|
struct st_visual* stVisual;
|
||||||
|
// State Tracker Visual
|
||||||
|
|
||||||
|
struct pipe_resource* textures[ST_ATTACHMENT_COUNT];
|
||||||
|
|
||||||
|
// Post processing
|
||||||
|
struct pp_queue_t* postProcess;
|
||||||
|
unsigned int postProcessEnable[PP_FILTERS];
|
||||||
|
|
||||||
Bitmap* bitmap;
|
Bitmap* bitmap;
|
||||||
color_space colorSpace;
|
color_space colorSpace;
|
||||||
|
|
||||||
struct st_framebuffer_iface* draw;
|
GalliumFramebuffer* draw;
|
||||||
struct st_framebuffer_iface* read;
|
GalliumFramebuffer* read;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,113 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012, Haiku, Inc. All Rights Reserved.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Artur Wyszynski, [email protected]
|
||||||
|
* Alexander von Gluck IV, [email protected]
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "GalliumFramebuffer.h"
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include "main/context.h"
|
||||||
|
#include "main/framebuffer.h"
|
||||||
|
#include "main/renderbuffer.h"
|
||||||
|
#include "pipe/p_format.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#define TRACE_FRAMEBUFFER
|
||||||
|
#ifdef TRACE_FRAEMBUFFER
|
||||||
|
# define TRACE(x...) printf("GalliumFramebuffer: " x)
|
||||||
|
# define CALLED() TRACE("CALLED: %s\n", __PRETTY_FUNCTION__)
|
||||||
|
#else
|
||||||
|
# define TRACE(x...)
|
||||||
|
# define CALLED()
|
||||||
|
#endif
|
||||||
|
#define ERROR(x...) printf("GalliumFramebuffer: " x)
|
||||||
|
|
||||||
|
|
||||||
|
static boolean
|
||||||
|
hgl_framebuffer_flush_front(struct st_framebuffer_iface* stfb,
|
||||||
|
enum st_attachment_type statt)
|
||||||
|
{
|
||||||
|
CALLED();
|
||||||
|
// TODO: I have *NO* idea how we are going to access this data...
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
struct stw_st_framebuffer *stwfb = stw_st_framebuffer(stfb);
|
||||||
|
pipe_mutex_lock(stwfb->fb->mutex);
|
||||||
|
|
||||||
|
struct pipe_resource* resource = textures[statt];
|
||||||
|
if (resource)
|
||||||
|
stw_framebuffer_present_locked(...);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static boolean
|
||||||
|
hgl_framebuffer_validate(struct st_framebuffer_iface* stfb,
|
||||||
|
const enum st_attachment_type* statts, unsigned count,
|
||||||
|
struct pipe_resource** out)
|
||||||
|
{
|
||||||
|
CALLED();
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GalliumFramebuffer::GalliumFramebuffer(struct st_visual* visual)
|
||||||
|
:
|
||||||
|
fBuffer(NULL)
|
||||||
|
{
|
||||||
|
CALLED();
|
||||||
|
fBuffer = CALLOC_STRUCT(st_framebuffer_iface);
|
||||||
|
if (!fBuffer) {
|
||||||
|
ERROR("%s: Couldn't calloc framebuffer!\n", __func__);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fBuffer->visual = visual;
|
||||||
|
fBuffer->flush_front = hgl_framebuffer_flush_front;
|
||||||
|
fBuffer->validate = hgl_framebuffer_validate;
|
||||||
|
|
||||||
|
pipe_mutex_init(fMutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GalliumFramebuffer::~GalliumFramebuffer()
|
||||||
|
{
|
||||||
|
CALLED();
|
||||||
|
// We lock and unlock to try and make sure we wait for anything
|
||||||
|
// using the framebuffer to finish
|
||||||
|
Lock();
|
||||||
|
if (!fBuffer) {
|
||||||
|
ERROR("%s: Strange, no Gallium Framebuffer to free?\n", __func__);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
FREE(fBuffer);
|
||||||
|
Unlock();
|
||||||
|
|
||||||
|
pipe_mutex_destroy(fMutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
status_t
|
||||||
|
GalliumFramebuffer::Lock()
|
||||||
|
{
|
||||||
|
CALLED();
|
||||||
|
pipe_mutex_lock(fMutex);
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
status_t
|
||||||
|
GalliumFramebuffer::Unlock()
|
||||||
|
{
|
||||||
|
CALLED();
|
||||||
|
pipe_mutex_unlock(fMutex);
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012, Haiku, Inc. All Rights Reserved.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Alexander von Gluck IV, [email protected]
|
||||||
|
*/
|
||||||
|
#ifndef GALLIUMFRAMEBUFFER_H
|
||||||
|
#define GALLIUMFRAMEBUFFER_H
|
||||||
|
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include "os/os_thread.h"
|
||||||
|
#include "pipe/p_screen.h"
|
||||||
|
#include "state_tracker/st_api.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class GalliumFramebuffer {
|
||||||
|
public:
|
||||||
|
GalliumFramebuffer(struct st_visual* visual);
|
||||||
|
~GalliumFramebuffer();
|
||||||
|
status_t Lock();
|
||||||
|
status_t Unlock();
|
||||||
|
|
||||||
|
struct st_framebuffer_iface* fBuffer;
|
||||||
|
|
||||||
|
private:
|
||||||
|
pipe_mutex fMutex;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* GALLIUMFRAMEBUFFER_H */
|
||||||
@@ -10,8 +10,16 @@ local sources =
|
|||||||
SoftwareRenderer.cpp
|
SoftwareRenderer.cpp
|
||||||
SoftwareWinsys.cpp
|
SoftwareWinsys.cpp
|
||||||
GalliumContext.cpp
|
GalliumContext.cpp
|
||||||
|
GalliumFramebuffer.cpp
|
||||||
bitmap_wrapper.cpp ;
|
bitmap_wrapper.cpp ;
|
||||||
|
|
||||||
|
if $(HAIKU_LLVM_PRESENT) {
|
||||||
|
# TODO: Add LLVM OptionalBuildPackage
|
||||||
|
SubDirC++Flags [ FDefines USE_LLVMPIPE ] ;
|
||||||
|
SubDirSysHdrs $(HAIKU_LLVM_HEADERS) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
UsePrivateHeaders interface ;
|
UsePrivateHeaders interface ;
|
||||||
SubDirSysHdrs $(HAIKU_MESA_HEADERS) ;
|
SubDirSysHdrs $(HAIKU_MESA_HEADERS) ;
|
||||||
Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ;
|
Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ;
|
||||||
|
|||||||
@@ -169,12 +169,18 @@ hook_winsys_displaytarget_display(struct sw_winsys* winsys,
|
|||||||
{
|
{
|
||||||
CALLED();
|
CALLED();
|
||||||
|
|
||||||
//struct haiku_displaytarget* haikuDisplayTarget
|
if (!contextPrivate) {
|
||||||
// = cast_haiku_displaytarget(displayTarget);
|
ERROR("%s: Passed invalid private pointer!\n", __func__);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// GDI copies data from haikuDisplayTarget->data into
|
Bitmap* bitmap = (Bitmap*)contextPrivate;
|
||||||
// a Bitmap casted from contextPrivate.. need to investigate
|
|
||||||
// this.
|
struct haiku_displaytarget* haikuDisplayTarget
|
||||||
|
= cast_haiku_displaytarget(displayTarget);
|
||||||
|
|
||||||
|
copy_bitmap_bits(bitmap, haikuDisplayTarget->data,
|
||||||
|
haikuDisplayTarget->size);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2005-2011, Haiku, Inc.
|
* Copyright 2005-2012, Haiku, Inc.
|
||||||
* Distributed under the terms of the MIT license.
|
* Distributed under the terms of the MIT license.
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
@@ -46,6 +46,7 @@
|
|||||||
#include <AppMisc.h>
|
#include <AppMisc.h>
|
||||||
#include <AutoDeleter.h>
|
#include <AutoDeleter.h>
|
||||||
#include <cpu_type.h>
|
#include <cpu_type.h>
|
||||||
|
#include <parsedate.h>
|
||||||
#include <system_revision.h>
|
#include <system_revision.h>
|
||||||
|
|
||||||
#include <Catalog.h>
|
#include <Catalog.h>
|
||||||
@@ -662,10 +663,21 @@ AboutView::AboutView()
|
|||||||
B_ALIGN_VERTICAL_UNSET));
|
B_ALIGN_VERTICAL_UNSET));
|
||||||
|
|
||||||
// Kernel build time/date
|
// Kernel build time/date
|
||||||
snprintf(string, sizeof(string), "%s %s",
|
BString kernelTimeDate;
|
||||||
systemInfo.kernel_build_date, systemInfo.kernel_build_time);
|
kernelTimeDate << systemInfo.kernel_build_date
|
||||||
|
<< " " << systemInfo.kernel_build_time;
|
||||||
|
BString buildTimeDate;
|
||||||
|
const BLocale* locale = BLocale::Default();
|
||||||
|
|
||||||
BStringView* kernelView = new BStringView("kerneltext", string);
|
time_t buildTimeDateStamp = parsedate(kernelTimeDate, -1);
|
||||||
|
if (buildTimeDateStamp > 0) {
|
||||||
|
if (locale->FormatDateTime(&buildTimeDate, buildTimeDateStamp,
|
||||||
|
B_LONG_DATE_FORMAT, B_MEDIUM_TIME_FORMAT) != B_OK)
|
||||||
|
buildTimeDate.SetTo(kernelTimeDate);
|
||||||
|
} else
|
||||||
|
buildTimeDate.SetTo(kernelTimeDate);
|
||||||
|
|
||||||
|
BStringView* kernelView = new BStringView("kerneltext", buildTimeDate);
|
||||||
kernelView->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT,
|
kernelView->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT,
|
||||||
B_ALIGN_VERTICAL_UNSET));
|
B_ALIGN_VERTICAL_UNSET));
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ public:
|
|||||||
interval /= 1000;
|
interval /= 1000;
|
||||||
|
|
||||||
// Find closest index
|
// Find closest index
|
||||||
int32 bestDiff = LONG_MAX;
|
int32 bestDiff = INT32_MAX;
|
||||||
uint32 bestIndex = 0;
|
uint32 bestIndex = 0;
|
||||||
for (uint32 i = 0; i < kNumUpdateIntervals; i++) {
|
for (uint32 i = 0; i < kNumUpdateIntervals; i++) {
|
||||||
int32 diff = abs(kUpdateIntervals[i] - interval);
|
int32 diff = abs(kUpdateIntervals[i] - interval);
|
||||||
|
|||||||
@@ -265,6 +265,7 @@ Application Debugger :
|
|||||||
ValueNodeContainer.cpp
|
ValueNodeContainer.cpp
|
||||||
|
|
||||||
# value/type_handlers
|
# value/type_handlers
|
||||||
|
BListTypeHandler.cpp
|
||||||
BMessageTypeHandler.cpp
|
BMessageTypeHandler.cpp
|
||||||
CStringTypeHandler.cpp
|
CStringTypeHandler.cpp
|
||||||
|
|
||||||
@@ -279,6 +280,7 @@ Application Debugger :
|
|||||||
# value/value_nodes
|
# value/value_nodes
|
||||||
AddressValueNode.cpp
|
AddressValueNode.cpp
|
||||||
ArrayValueNode.cpp
|
ArrayValueNode.cpp
|
||||||
|
BListValueNode.cpp
|
||||||
BMessageValueNode.cpp
|
BMessageValueNode.cpp
|
||||||
CompoundValueNode.cpp
|
CompoundValueNode.cpp
|
||||||
CStringValueNode.cpp
|
CStringValueNode.cpp
|
||||||
|
|||||||
@@ -309,8 +309,9 @@ ArchitectureX86::CreateStackFrame(Image* image, FunctionDebugInfo* function,
|
|||||||
// If the function is not frameless and we're at the top frame we need
|
// If the function is not frameless and we're at the top frame we need
|
||||||
// to check whether the prologue has not been executed (completely) or
|
// to check whether the prologue has not been executed (completely) or
|
||||||
// we're already after the epilogue.
|
// we're already after the epilogue.
|
||||||
if (hasPrologue && isTopFrame) {
|
if (isTopFrame) {
|
||||||
uint32 stack = 0;
|
uint32 stack = 0;
|
||||||
|
if (hasPrologue) {
|
||||||
if (eip < function->Address() + 3) {
|
if (eip < function->Address() + 3) {
|
||||||
// The prologue has not been executed yet, i.e. there's no
|
// The prologue has not been executed yet, i.e. there's no
|
||||||
// stack frame yet. Get the return address from the stack.
|
// stack frame yet. Get the return address from the stack.
|
||||||
@@ -320,15 +321,26 @@ ArchitectureX86::CreateStackFrame(Image* image, FunctionDebugInfo* function,
|
|||||||
stack += 4;
|
stack += 4;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Not in the function prologue, but maybe after the epilogue.
|
// Not in the function prologue, but maybe after the
|
||||||
// The epilogue is a single "pop %ebp", so we check whether the
|
// epilogue. The epilogue is a single "pop %ebp", so we
|
||||||
// current instruction is already a "ret".
|
// check whether the current instruction is already a
|
||||||
|
// "ret".
|
||||||
uint8 code[1];
|
uint8 code[1];
|
||||||
if (fTeamMemory->ReadMemory(eip, &code, 1) == 1
|
if (fTeamMemory->ReadMemory(eip, &code, 1) == 1
|
||||||
&& code[0] == 0xc3) {
|
&& code[0] == 0xc3) {
|
||||||
stack = cpuState->IntRegisterValue(X86_REGISTER_ESP);
|
stack = cpuState->IntRegisterValue(X86_REGISTER_ESP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// Check if the instruction pointer is at a readable location.
|
||||||
|
// If it isn't, then chances are we got here via a bogus
|
||||||
|
// function pointer, and the prologue hasn't actually been
|
||||||
|
// executed. In such a case, what we need is right at the top
|
||||||
|
// of the stack.
|
||||||
|
uint8 data[1];
|
||||||
|
if (fTeamMemory->ReadMemory(eip, &data, 1) != 1)
|
||||||
|
stack = cpuState->IntRegisterValue(X86_REGISTER_ESP);
|
||||||
|
}
|
||||||
|
|
||||||
if (stack != 0) {
|
if (stack != 0) {
|
||||||
uint32 address;
|
uint32 address;
|
||||||
|
|||||||
@@ -417,8 +417,15 @@ DwarfImageDebugInfo::GetType(GlobalTypeCache* cache,
|
|||||||
BReference<RegisterMap> fromDwarfMapReference(fromDwarfMap, true);
|
BReference<RegisterMap> fromDwarfMapReference(fromDwarfMap, true);
|
||||||
|
|
||||||
// create the target interface
|
// create the target interface
|
||||||
BasicTargetInterface inputInterface(registers, registerCount, fromDwarfMap,
|
BasicTargetInterface *inputInterface
|
||||||
fArchitecture, fTeamMemory);
|
= new(std::nothrow) BasicTargetInterface(registers, registerCount,
|
||||||
|
fromDwarfMap, fArchitecture, fTeamMemory);
|
||||||
|
|
||||||
|
if (inputInterface == NULL)
|
||||||
|
return B_NO_MEMORY;
|
||||||
|
|
||||||
|
BReference<BasicTargetInterface> inputInterfaceReference(inputInterface,
|
||||||
|
true);
|
||||||
|
|
||||||
// iterate through all compilation units
|
// iterate through all compilation units
|
||||||
for (int32 i = 0; CompilationUnit* unit = fFile->CompilationUnitAt(i);
|
for (int32 i = 0; CompilationUnit* unit = fFile->CompilationUnitAt(i);
|
||||||
@@ -458,7 +465,7 @@ DwarfImageDebugInfo::GetType(GlobalTypeCache* cache,
|
|||||||
if (typeContext == NULL) {
|
if (typeContext == NULL) {
|
||||||
typeContext = new(std::nothrow)
|
typeContext = new(std::nothrow)
|
||||||
DwarfTypeContext(fArchitecture, fImageInfo.ImageID(), fFile,
|
DwarfTypeContext(fArchitecture, fImageInfo.ImageID(), fFile,
|
||||||
unit, NULL, 0, 0, fRelocationDelta, &inputInterface,
|
unit, NULL, 0, 0, fRelocationDelta, inputInterface,
|
||||||
fromDwarfMap);
|
fromDwarfMap);
|
||||||
if (typeContext == NULL)
|
if (typeContext == NULL)
|
||||||
return B_NO_MEMORY;
|
return B_NO_MEMORY;
|
||||||
@@ -1080,8 +1087,8 @@ DwarfImageDebugInfo::_EvaluateBaseTypeConstraints(DIEType* type,
|
|||||||
if (baseTypeOwnerEntry != NULL) {
|
if (baseTypeOwnerEntry != NULL) {
|
||||||
DwarfUtils::GetFullyQualifiedDIEName(baseTypeOwnerEntry,
|
DwarfUtils::GetFullyQualifiedDIEName(baseTypeOwnerEntry,
|
||||||
baseEntryName);
|
baseEntryName);
|
||||||
if (!baseEntryName.IsEmpty() && baseEntryName
|
|
||||||
!= constraints.BaseTypeName())
|
if (baseEntryName != constraints.BaseTypeName())
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -102,6 +102,17 @@ struct HasBaseTypesPredicate {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// #pragma mark - HasTemplateParametersPredicate
|
||||||
|
|
||||||
|
|
||||||
|
struct HasTemplateParametersPredicate {
|
||||||
|
inline bool operator()(DIEClassBaseType* entry) const
|
||||||
|
{
|
||||||
|
return !entry->TemplateParameters().IsEmpty();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark - HasParametersPredicate
|
// #pragma mark - HasParametersPredicate
|
||||||
|
|
||||||
|
|
||||||
@@ -516,7 +527,7 @@ printf(" -> failed to add type to cache\n");
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If the type is a class/struct/interface type, we also need to add its
|
// If the type is a class/struct/interface type, we also need to add its
|
||||||
// base types.
|
// base types, and possibly template parameters.
|
||||||
if (DIEClassBaseType* classTypeEntry
|
if (DIEClassBaseType* classTypeEntry
|
||||||
= dynamic_cast<DIEClassBaseType*>(typeEntry)) {
|
= dynamic_cast<DIEClassBaseType*>(typeEntry)) {
|
||||||
// find the abstract origin or specification that defines the base types
|
// find the abstract origin or specification that defines the base types
|
||||||
@@ -549,6 +560,52 @@ printf(" -> failed to add type to cache\n");
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// find the abstract origin or specification that defines the template
|
||||||
|
// parameters
|
||||||
|
classTypeEntry = DwarfUtils::GetDIEByPredicate(
|
||||||
|
dynamic_cast<DIEClassBaseType*>(typeEntry),
|
||||||
|
HasTemplateParametersPredicate());
|
||||||
|
|
||||||
|
if (classTypeEntry != NULL) {
|
||||||
|
for (DebugInfoEntryList::ConstIterator it
|
||||||
|
= classTypeEntry->TemplateParameters()
|
||||||
|
.GetIterator();
|
||||||
|
DebugInfoEntry* _typeEntry = it.Next();) {
|
||||||
|
DIETemplateTypeParameter* templateTypeEntry
|
||||||
|
= dynamic_cast<DIETemplateTypeParameter*>(_typeEntry);
|
||||||
|
DwarfType* templateType;
|
||||||
|
if (templateTypeEntry != NULL) {
|
||||||
|
if (CreateType(templateTypeEntry->GetType(), templateType)
|
||||||
|
!= B_OK) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
DIETemplateValueParameter* templateValueEntry
|
||||||
|
= dynamic_cast<DIETemplateValueParameter*>(_typeEntry);
|
||||||
|
if (CreateType(templateValueEntry->GetType(), templateType)
|
||||||
|
!= B_OK) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
BReference<DwarfType> templateTypeReference(templateType,
|
||||||
|
true);
|
||||||
|
DwarfTemplateParameter* parameter
|
||||||
|
= new(std::nothrow) DwarfTemplateParameter(_typeEntry,
|
||||||
|
templateType);
|
||||||
|
if (parameter == NULL) {
|
||||||
|
cacheLocker.Lock();
|
||||||
|
fTypeCache->RemoveType(type);
|
||||||
|
return B_NO_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!type->AddTemplateParameter(parameter)) {
|
||||||
|
cacheLocker.Lock();
|
||||||
|
fTypeCache->RemoveType(type);
|
||||||
|
return B_NO_MEMORY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_type = typeReference.Detach();
|
_type = typeReference.Detach();
|
||||||
|
|||||||
@@ -518,6 +518,45 @@ DwarfFunctionParameter::GetType() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// #pragma mark - DwarfTemplateParameter
|
||||||
|
|
||||||
|
|
||||||
|
DwarfTemplateParameter::DwarfTemplateParameter(DebugInfoEntry* entry,
|
||||||
|
DwarfType* type)
|
||||||
|
:
|
||||||
|
fEntry(entry),
|
||||||
|
fType(type)
|
||||||
|
{
|
||||||
|
fType->AcquireReference();
|
||||||
|
DIETemplateTypeParameter* typeParameter
|
||||||
|
= dynamic_cast<DIETemplateTypeParameter *>(entry);
|
||||||
|
if (typeParameter != NULL)
|
||||||
|
fTemplateKind = TEMPLATE_TYPE_TYPE;
|
||||||
|
else {
|
||||||
|
DIETemplateValueParameter* valueParameter
|
||||||
|
= dynamic_cast<DIETemplateValueParameter *>(entry);
|
||||||
|
fTemplateKind = TEMPLATE_TYPE_VALUE;
|
||||||
|
const ConstantAttributeValue* constValue = valueParameter
|
||||||
|
->ConstValue();
|
||||||
|
switch (constValue->attributeClass) {
|
||||||
|
case ATTRIBUTE_CLASS_CONSTANT:
|
||||||
|
fValue.SetTo(constValue->constant);
|
||||||
|
break;
|
||||||
|
case ATTRIBUTE_CLASS_STRING:
|
||||||
|
fValue.SetTo(constValue->string);
|
||||||
|
break;
|
||||||
|
// TODO: ATTRIBUTE_CLASS_BLOCK_DATA
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DwarfTemplateParameter::~DwarfTemplateParameter()
|
||||||
|
{
|
||||||
|
fType->ReleaseReference();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark - DwarfPrimitiveType
|
// #pragma mark - DwarfPrimitiveType
|
||||||
|
|
||||||
|
|
||||||
@@ -567,6 +606,11 @@ DwarfCompoundType::~DwarfCompoundType()
|
|||||||
}
|
}
|
||||||
for (int32 i = 0; DwarfDataMember* member = fDataMembers.ItemAt(i); i++)
|
for (int32 i = 0; DwarfDataMember* member = fDataMembers.ItemAt(i); i++)
|
||||||
member->ReleaseReference();
|
member->ReleaseReference();
|
||||||
|
|
||||||
|
for (int32 i = 0; DwarfTemplateParameter* parameter
|
||||||
|
= fTemplateParameters.ItemAt(i); i++) {
|
||||||
|
parameter->ReleaseReference();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -605,6 +649,20 @@ DwarfCompoundType::DataMemberAt(int32 index) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int32
|
||||||
|
DwarfCompoundType::CountTemplateParameters() const
|
||||||
|
{
|
||||||
|
return fTemplateParameters.CountItems();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TemplateParameter*
|
||||||
|
DwarfCompoundType::TemplateParameterAt(int32 index) const
|
||||||
|
{
|
||||||
|
return fTemplateParameters.ItemAt(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
DwarfCompoundType::ResolveBaseTypeLocation(BaseType* _baseType,
|
DwarfCompoundType::ResolveBaseTypeLocation(BaseType* _baseType,
|
||||||
const ValueLocation& parentLocation, ValueLocation*& _location)
|
const ValueLocation& parentLocation, ValueLocation*& _location)
|
||||||
@@ -736,6 +794,17 @@ DwarfCompoundType::AddDataMember(DwarfDataMember* member)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
DwarfCompoundType::AddTemplateParameter(DwarfTemplateParameter* parameter)
|
||||||
|
{
|
||||||
|
if (!fTemplateParameters.AddItem(parameter))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
parameter->AcquireReference();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
DwarfCompoundType::_ResolveDataMemberLocation(DwarfType* memberType,
|
DwarfCompoundType::_ResolveDataMemberLocation(DwarfType* memberType,
|
||||||
const MemberLocation* memberLocation,
|
const MemberLocation* memberLocation,
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
class Architecture;
|
class Architecture;
|
||||||
class CompilationUnit;
|
class CompilationUnit;
|
||||||
|
class DebugInfoEntry;
|
||||||
class DIEAddressingType;
|
class DIEAddressingType;
|
||||||
class DIEArrayType;
|
class DIEArrayType;
|
||||||
class DIEBaseType;
|
class DIEBaseType;
|
||||||
@@ -237,6 +238,25 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class DwarfTemplateParameter : public TemplateParameter {
|
||||||
|
public:
|
||||||
|
DwarfTemplateParameter(
|
||||||
|
DebugInfoEntry* entry,
|
||||||
|
DwarfType* type);
|
||||||
|
~DwarfTemplateParameter();
|
||||||
|
|
||||||
|
virtual template_type_kind Kind() const { return fTemplateKind; }
|
||||||
|
virtual Type* GetType() const { return fType; }
|
||||||
|
virtual BVariant Value() const { return fValue; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
DebugInfoEntry* fEntry;
|
||||||
|
template_type_kind fTemplateKind;
|
||||||
|
Type* fType;
|
||||||
|
BVariant fValue;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class DwarfPrimitiveType : public PrimitiveType, public DwarfType {
|
class DwarfPrimitiveType : public PrimitiveType, public DwarfType {
|
||||||
public:
|
public:
|
||||||
DwarfPrimitiveType(
|
DwarfPrimitiveType(
|
||||||
@@ -271,6 +291,9 @@ public:
|
|||||||
virtual int32 CountDataMembers() const;
|
virtual int32 CountDataMembers() const;
|
||||||
virtual DataMember* DataMemberAt(int32 index) const;
|
virtual DataMember* DataMemberAt(int32 index) const;
|
||||||
|
|
||||||
|
virtual int32 CountTemplateParameters() const;
|
||||||
|
virtual TemplateParameter* TemplateParameterAt(int32 index) const;
|
||||||
|
|
||||||
virtual status_t ResolveBaseTypeLocation(BaseType* _baseType,
|
virtual status_t ResolveBaseTypeLocation(BaseType* _baseType,
|
||||||
const ValueLocation& parentLocation,
|
const ValueLocation& parentLocation,
|
||||||
ValueLocation*& _location);
|
ValueLocation*& _location);
|
||||||
@@ -285,10 +308,13 @@ public:
|
|||||||
|
|
||||||
bool AddInheritance(DwarfInheritance* inheritance);
|
bool AddInheritance(DwarfInheritance* inheritance);
|
||||||
bool AddDataMember(DwarfDataMember* member);
|
bool AddDataMember(DwarfDataMember* member);
|
||||||
|
bool AddTemplateParameter(
|
||||||
|
DwarfTemplateParameter* parameter);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typedef BObjectList<DwarfDataMember> DataMemberList;
|
typedef BObjectList<DwarfDataMember> DataMemberList;
|
||||||
typedef BObjectList<DwarfInheritance> InheritanceList;
|
typedef BObjectList<DwarfInheritance> InheritanceList;
|
||||||
|
typedef BObjectList<DwarfTemplateParameter> TemplateParameterList;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
status_t _ResolveDataMemberLocation(
|
status_t _ResolveDataMemberLocation(
|
||||||
@@ -302,6 +328,7 @@ private:
|
|||||||
DIECompoundType* fEntry;
|
DIECompoundType* fEntry;
|
||||||
InheritanceList fInheritances;
|
InheritanceList fInheritances;
|
||||||
DataMemberList fDataMembers;
|
DataMemberList fDataMembers;
|
||||||
|
TemplateParameterList fTemplateParameters;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -477,7 +477,10 @@ DIEClassBaseType::AddChild(DebugInfoEntry* child)
|
|||||||
case DW_TAG_subprogram:
|
case DW_TAG_subprogram:
|
||||||
fMemberFunctions.Add(child);
|
fMemberFunctions.Add(child);
|
||||||
return B_OK;
|
return B_OK;
|
||||||
// TODO: Templates!
|
case DW_TAG_template_type_parameter:
|
||||||
|
case DW_TAG_template_value_parameter:
|
||||||
|
fTemplateParameters.Add(child);
|
||||||
|
return B_OK;
|
||||||
// TODO: Variants!
|
// TODO: Variants!
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -353,6 +353,8 @@ public:
|
|||||||
|
|
||||||
const DebugInfoEntryList& BaseTypes() const
|
const DebugInfoEntryList& BaseTypes() const
|
||||||
{ return fBaseTypes; }
|
{ return fBaseTypes; }
|
||||||
|
const DebugInfoEntryList& TemplateParameters() const
|
||||||
|
{ return fTemplateParameters; }
|
||||||
|
|
||||||
virtual status_t AddChild(DebugInfoEntry* child);
|
virtual status_t AddChild(DebugInfoEntry* child);
|
||||||
|
|
||||||
@@ -362,6 +364,7 @@ protected:
|
|||||||
DebugInfoEntryList fAccessDeclarations;
|
DebugInfoEntryList fAccessDeclarations;
|
||||||
DebugInfoEntryList fMemberFunctions;
|
DebugInfoEntryList fMemberFunctions;
|
||||||
DebugInfoEntryList fInnerTypes;
|
DebugInfoEntryList fInnerTypes;
|
||||||
|
DebugInfoEntryList fTemplateParameters;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -72,6 +72,14 @@ FunctionParameter::~FunctionParameter()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// #pragma mark - TemplateParameter
|
||||||
|
|
||||||
|
|
||||||
|
TemplateParameter::~TemplateParameter()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark - Type
|
// #pragma mark - Type
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -43,6 +43,12 @@ enum address_type_kind {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
enum template_type_kind {
|
||||||
|
TEMPLATE_TYPE_TYPE,
|
||||||
|
TEMPLATE_TYPE_VALUE
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
TYPE_MODIFIER_CONST = 0x01,
|
TYPE_MODIFIER_CONST = 0x01,
|
||||||
TYPE_MODIFIER_VOLATILE = 0x02,
|
TYPE_MODIFIER_VOLATILE = 0x02,
|
||||||
@@ -105,6 +111,16 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class TemplateParameter : public BReferenceable {
|
||||||
|
public:
|
||||||
|
virtual ~TemplateParameter();
|
||||||
|
|
||||||
|
virtual template_type_kind Kind() const = 0;
|
||||||
|
virtual Type* GetType() const = 0;
|
||||||
|
virtual BVariant Value() const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class Type : public BReferenceable {
|
class Type : public BReferenceable {
|
||||||
public:
|
public:
|
||||||
virtual ~Type();
|
virtual ~Type();
|
||||||
@@ -158,6 +174,10 @@ public:
|
|||||||
virtual int32 CountDataMembers() const = 0;
|
virtual int32 CountDataMembers() const = 0;
|
||||||
virtual DataMember* DataMemberAt(int32 index) const = 0;
|
virtual DataMember* DataMemberAt(int32 index) const = 0;
|
||||||
|
|
||||||
|
virtual int32 CountTemplateParameters() const = 0;
|
||||||
|
virtual TemplateParameter* TemplateParameterAt(int32 index) const = 0;
|
||||||
|
|
||||||
|
|
||||||
virtual status_t ResolveBaseTypeLocation(BaseType* baseType,
|
virtual status_t ResolveBaseTypeLocation(BaseType* baseType,
|
||||||
const ValueLocation& parentLocation,
|
const ValueLocation& parentLocation,
|
||||||
ValueLocation*& _location) = 0;
|
ValueLocation*& _location) = 0;
|
||||||
|
|||||||
@@ -1030,6 +1030,18 @@ VariablesView::VariableTableModel::ValueNodeChildrenDeleted(ValueNode* node)
|
|||||||
if (modelNode == NULL)
|
if (modelNode == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// in the case of an address node with a hidden child,
|
||||||
|
// we want to send removal notifications for the children
|
||||||
|
// instead.
|
||||||
|
BReference<ModelNode> hiddenChild;
|
||||||
|
if (modelNode->CountChildren() == 1
|
||||||
|
&& modelNode->ChildAt(0)->IsHidden()) {
|
||||||
|
hiddenChild.SetTo(modelNode->ChildAt(0));
|
||||||
|
modelNode->RemoveChild(hiddenChild);
|
||||||
|
modelNode = hiddenChild;
|
||||||
|
fNodeTable.Remove(hiddenChild);
|
||||||
|
}
|
||||||
|
|
||||||
for (int32 i = 0; i < modelNode->CountChildren(); i++) {
|
for (int32 i = 0; i < modelNode->CountChildren(); i++) {
|
||||||
BReference<ModelNode> childNode = modelNode->ChildAt(i);
|
BReference<ModelNode> childNode = modelNode->ChildAt(i);
|
||||||
TreeTablePath treePath;
|
TreeTablePath treePath;
|
||||||
@@ -1776,8 +1788,10 @@ VariablesView::MessageReceived(BMessage* message)
|
|||||||
case MSG_MODEL_NODE_HIDDEN:
|
case MSG_MODEL_NODE_HIDDEN:
|
||||||
{
|
{
|
||||||
ModelNode* node;
|
ModelNode* node;
|
||||||
if (message->FindPointer("node", (void**)&node) == B_OK)
|
if (message->FindPointer("node", (void**)&node) == B_OK) {
|
||||||
|
BReference<ModelNode> modelNodeReference(node, true);
|
||||||
_RequestNodeValue(node);
|
_RequestNodeValue(node);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
#include "AddressValueNode.h"
|
#include "AddressValueNode.h"
|
||||||
#include "ArrayValueNode.h"
|
#include "ArrayValueNode.h"
|
||||||
#include "CompoundValueNode.h"
|
#include "CompoundValueNode.h"
|
||||||
|
#include "BListTypeHandler.h"
|
||||||
#include "BMessageTypeHandler.h"
|
#include "BMessageTypeHandler.h"
|
||||||
#include "CStringTypeHandler.h"
|
#include "CStringTypeHandler.h"
|
||||||
#include "EnumerationValueNode.h"
|
#include "EnumerationValueNode.h"
|
||||||
@@ -152,6 +153,7 @@ TypeHandlerRoster::RegisterDefaultHandlers()
|
|||||||
|
|
||||||
REGISTER_SPECIALIZED_HANDLER(CString);
|
REGISTER_SPECIALIZED_HANDLER(CString);
|
||||||
REGISTER_SPECIALIZED_HANDLER(BMessage);
|
REGISTER_SPECIALIZED_HANDLER(BMessage);
|
||||||
|
REGISTER_SPECIALIZED_HANDLER(BList);
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012, Rene Gollent, rene@gollent.com.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "BListTypeHandler.h"
|
||||||
|
|
||||||
|
#include <new>
|
||||||
|
|
||||||
|
#include "BListValueNode.h"
|
||||||
|
#include "Type.h"
|
||||||
|
|
||||||
|
|
||||||
|
BListTypeHandler::~BListTypeHandler()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
float
|
||||||
|
BListTypeHandler::SupportsType(Type* type)
|
||||||
|
{
|
||||||
|
if (dynamic_cast<CompoundType*>(type) != NULL
|
||||||
|
&& (type->Name() == "BList"
|
||||||
|
|| type->Name().Compare("BObjectList", 11) == 0))
|
||||||
|
return 1.0f;
|
||||||
|
|
||||||
|
return 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
status_t
|
||||||
|
BListTypeHandler::CreateValueNode(ValueNodeChild* nodeChild, Type* type,
|
||||||
|
ValueNode*& _node)
|
||||||
|
{
|
||||||
|
if (SupportsType(type) == 0.0f)
|
||||||
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
|
ValueNode* node = new(std::nothrow) BListValueNode(nodeChild,
|
||||||
|
type);
|
||||||
|
|
||||||
|
if (node == NULL)
|
||||||
|
return B_NO_MEMORY;
|
||||||
|
|
||||||
|
_node = node;
|
||||||
|
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012, Rene Gollent, rene@gollent.com.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
#ifndef BLIST_TYPE_HANDLER_H
|
||||||
|
#define BLIST_TYPE_HANDLER_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "TypeHandler.h"
|
||||||
|
|
||||||
|
|
||||||
|
class BListTypeHandler : public TypeHandler {
|
||||||
|
public:
|
||||||
|
virtual ~BListTypeHandler();
|
||||||
|
|
||||||
|
virtual float SupportsType(Type* type);
|
||||||
|
virtual status_t CreateValueNode(ValueNodeChild* nodeChild,
|
||||||
|
Type* type, ValueNode*& _node);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // BLIST_TYPE_HANDLER_H
|
||||||
@@ -0,0 +1,375 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012, Rene Gollent, rene@gollent.com
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "BListValueNode.h"
|
||||||
|
|
||||||
|
#include <new>
|
||||||
|
|
||||||
|
#include <AutoDeleter.h>
|
||||||
|
|
||||||
|
#include "AddressValueNode.h"
|
||||||
|
#include "Architecture.h"
|
||||||
|
#include "StringValue.h"
|
||||||
|
#include "Tracing.h"
|
||||||
|
#include "Type.h"
|
||||||
|
#include "TypeLookupConstraints.h"
|
||||||
|
#include "ValueLoader.h"
|
||||||
|
#include "ValueLocation.h"
|
||||||
|
#include "ValueNodeContainer.h"
|
||||||
|
|
||||||
|
|
||||||
|
// maximum number of array elements to show by default
|
||||||
|
static const int64 kMaxArrayElementCount = 20;
|
||||||
|
|
||||||
|
|
||||||
|
//#pragma mark - BListValueNode::BListElementNodeChild
|
||||||
|
|
||||||
|
|
||||||
|
class BListValueNode::BListElementNodeChild : public ValueNodeChild {
|
||||||
|
public:
|
||||||
|
BListElementNodeChild(BListValueNode* parent,
|
||||||
|
int64 elementIndex, Type* type);
|
||||||
|
virtual ~BListElementNodeChild();
|
||||||
|
|
||||||
|
virtual const BString& Name() const { return fName; };
|
||||||
|
virtual Type* GetType() const { return fType; };
|
||||||
|
virtual ValueNode* Parent() const { return fParent; };
|
||||||
|
|
||||||
|
virtual status_t ResolveLocation(ValueLoader* valueLoader,
|
||||||
|
ValueLocation*& _location);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Type* fType;
|
||||||
|
BListValueNode* fParent;
|
||||||
|
int64 fElementIndex;
|
||||||
|
BString fName;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
BListValueNode::BListElementNodeChild::BListElementNodeChild(
|
||||||
|
BListValueNode* parent, int64 elementIndex, Type* type)
|
||||||
|
:
|
||||||
|
ValueNodeChild(),
|
||||||
|
fType(type),
|
||||||
|
fParent(parent),
|
||||||
|
fElementIndex(elementIndex),
|
||||||
|
fName()
|
||||||
|
{
|
||||||
|
fType->AcquireReference();
|
||||||
|
fParent->AcquireReference();
|
||||||
|
fName.SetToFormat("[%" B_PRId64 "]", fElementIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BListValueNode::BListElementNodeChild::~BListElementNodeChild()
|
||||||
|
{
|
||||||
|
fType->ReleaseReference();
|
||||||
|
fParent->ReleaseReference();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
status_t
|
||||||
|
BListValueNode::BListElementNodeChild::ResolveLocation(
|
||||||
|
ValueLoader* valueLoader, ValueLocation*& _location)
|
||||||
|
{
|
||||||
|
uint8 addressSize = valueLoader->GetArchitecture()->AddressSize();
|
||||||
|
ValueLocation* location = new(std::nothrow) ValueLocation();
|
||||||
|
if (location == NULL)
|
||||||
|
return B_NO_MEMORY;
|
||||||
|
|
||||||
|
|
||||||
|
uint64 listAddress = fParent->fDataLocation.ToUInt64();
|
||||||
|
listAddress += fElementIndex * addressSize;
|
||||||
|
|
||||||
|
ValuePieceLocation piece;
|
||||||
|
piece.SetToMemory(listAddress);
|
||||||
|
piece.SetSize(addressSize);
|
||||||
|
location->AddPiece(piece);
|
||||||
|
|
||||||
|
_location = location;
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//#pragma mark - BListItemCountNodeChild
|
||||||
|
|
||||||
|
class BListValueNode::BListItemCountNodeChild : public ValueNodeChild {
|
||||||
|
public:
|
||||||
|
BListItemCountNodeChild(BVariant location,
|
||||||
|
BListValueNode* parent, Type* type);
|
||||||
|
virtual ~BListItemCountNodeChild();
|
||||||
|
|
||||||
|
virtual const BString& Name() const { return fName; };
|
||||||
|
virtual Type* GetType() const { return fType; };
|
||||||
|
virtual ValueNode* Parent() const { return fParent; };
|
||||||
|
|
||||||
|
virtual status_t ResolveLocation(ValueLoader* valueLoader,
|
||||||
|
ValueLocation*& _location);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Type* fType;
|
||||||
|
BListValueNode* fParent;
|
||||||
|
BVariant fLocation;
|
||||||
|
BString fName;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
BListValueNode::BListItemCountNodeChild::BListItemCountNodeChild(
|
||||||
|
BVariant location, BListValueNode* parent, Type* type)
|
||||||
|
:
|
||||||
|
ValueNodeChild(),
|
||||||
|
fType(type),
|
||||||
|
fParent(parent),
|
||||||
|
fLocation(location),
|
||||||
|
fName("Capacity")
|
||||||
|
{
|
||||||
|
fType->AcquireReference();
|
||||||
|
fParent->AcquireReference();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BListValueNode::BListItemCountNodeChild::~BListItemCountNodeChild()
|
||||||
|
{
|
||||||
|
fType->ReleaseReference();
|
||||||
|
fParent->ReleaseReference();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
status_t
|
||||||
|
BListValueNode::BListItemCountNodeChild::ResolveLocation(
|
||||||
|
ValueLoader* valueLoader, ValueLocation*& _location)
|
||||||
|
{
|
||||||
|
ValueLocation* location = new(std::nothrow) ValueLocation();
|
||||||
|
if (location == NULL)
|
||||||
|
return B_NO_MEMORY;
|
||||||
|
|
||||||
|
ValuePieceLocation piece;
|
||||||
|
piece.SetToMemory(fLocation.ToUInt64());
|
||||||
|
piece.SetSize(sizeof(int32));
|
||||||
|
location->AddPiece(piece);
|
||||||
|
|
||||||
|
_location = location;
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//#pragma mark - BListValueNode
|
||||||
|
|
||||||
|
BListValueNode::BListValueNode(ValueNodeChild* nodeChild,
|
||||||
|
Type* type)
|
||||||
|
:
|
||||||
|
ValueNode(nodeChild),
|
||||||
|
fType(type),
|
||||||
|
fLoader(NULL),
|
||||||
|
fItemCountType(NULL),
|
||||||
|
fItemCount(0)
|
||||||
|
{
|
||||||
|
fType->AcquireReference();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BListValueNode::~BListValueNode()
|
||||||
|
{
|
||||||
|
fType->ReleaseReference();
|
||||||
|
for (int32 i = 0; i < fChildren.CountItems(); i++)
|
||||||
|
fChildren.ItemAt(i)->ReleaseReference();
|
||||||
|
|
||||||
|
if (fItemCountType != NULL)
|
||||||
|
fItemCountType->ReleaseReference();
|
||||||
|
|
||||||
|
delete fLoader;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Type*
|
||||||
|
BListValueNode::GetType() const
|
||||||
|
{
|
||||||
|
return fType;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
status_t
|
||||||
|
BListValueNode::ResolvedLocationAndValue(ValueLoader* valueLoader,
|
||||||
|
ValueLocation*& _location, Value*& _value)
|
||||||
|
{
|
||||||
|
// get the location
|
||||||
|
ValueLocation* location = NodeChild()->Location();
|
||||||
|
if (location == NULL)
|
||||||
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
|
|
||||||
|
// get the value type
|
||||||
|
type_code valueType;
|
||||||
|
if (valueLoader->GetArchitecture()->AddressSize() == 4) {
|
||||||
|
valueType = B_UINT32_TYPE;
|
||||||
|
TRACE_LOCALS(" -> 32 bit\n");
|
||||||
|
} else {
|
||||||
|
valueType = B_UINT64_TYPE;
|
||||||
|
TRACE_LOCALS(" -> 64 bit\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// load the value data
|
||||||
|
|
||||||
|
status_t error = B_OK;
|
||||||
|
_location = location;
|
||||||
|
_value = NULL;
|
||||||
|
|
||||||
|
ValueLocation* memberLocation = NULL;
|
||||||
|
CompoundType* baseType = dynamic_cast<CompoundType*>(fType);
|
||||||
|
|
||||||
|
if (baseType->CountTemplateParameters() != 0) {
|
||||||
|
// for BObjectList we need to walk up
|
||||||
|
// the hierarchy: BObjectList -> _PointerList_ -> BList
|
||||||
|
if (baseType->CountBaseTypes() == 0)
|
||||||
|
return B_BAD_DATA;
|
||||||
|
|
||||||
|
baseType = dynamic_cast<CompoundType*>(baseType->BaseTypeAt(0)
|
||||||
|
->GetType());
|
||||||
|
if (baseType == NULL || baseType->Name() != "_PointerList_")
|
||||||
|
return B_BAD_DATA;
|
||||||
|
|
||||||
|
if (baseType->CountBaseTypes() == 0)
|
||||||
|
return B_BAD_DATA;
|
||||||
|
|
||||||
|
baseType = dynamic_cast<CompoundType*>(baseType->BaseTypeAt(0)
|
||||||
|
->GetType());
|
||||||
|
if (baseType == NULL || baseType->Name() != "BList")
|
||||||
|
return B_BAD_DATA;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int32 i = 0; i < baseType->CountDataMembers(); i++) {
|
||||||
|
DataMember* member = baseType->DataMemberAt(i);
|
||||||
|
if (strcmp(member->Name(), "fObjectList") == 0) {
|
||||||
|
error = baseType->ResolveDataMemberLocation(member,
|
||||||
|
*location, memberLocation);
|
||||||
|
if (error != B_OK) {
|
||||||
|
TRACE_LOCALS(
|
||||||
|
"BListValueNode::ResolvedLocationAndValue(): "
|
||||||
|
"failed to resolve location of header member: %s\n",
|
||||||
|
strerror(error));
|
||||||
|
delete memberLocation;
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
error = valueLoader->LoadValue(memberLocation, valueType,
|
||||||
|
false, fDataLocation);
|
||||||
|
delete memberLocation;
|
||||||
|
if (error != B_OK)
|
||||||
|
return error;
|
||||||
|
} else if (strcmp(member->Name(), "fItemCount") == 0) {
|
||||||
|
error = baseType->ResolveDataMemberLocation(member,
|
||||||
|
*location, memberLocation);
|
||||||
|
if (error != B_OK) {
|
||||||
|
TRACE_LOCALS(
|
||||||
|
"BListValueNode::ResolvedLocationAndValue(): "
|
||||||
|
"failed to resolve location of header member: %s\n",
|
||||||
|
strerror(error));
|
||||||
|
delete memberLocation;
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
fItemCountType = member->GetType();
|
||||||
|
fItemCountType->AcquireReference();
|
||||||
|
|
||||||
|
fItemCountLocation = memberLocation->PieceAt(0).address;
|
||||||
|
|
||||||
|
BVariant listSize;
|
||||||
|
error = valueLoader->LoadValue(memberLocation, valueType,
|
||||||
|
false, listSize);
|
||||||
|
delete memberLocation;
|
||||||
|
if (error != B_OK)
|
||||||
|
return error;
|
||||||
|
|
||||||
|
fItemCount = listSize.ToInt32();
|
||||||
|
TRACE_LOCALS(
|
||||||
|
"BListValueNode::ResolvedLocationAndValue(): "
|
||||||
|
"detected list size %" B_PRId32 "\n",
|
||||||
|
fItemCount);
|
||||||
|
}
|
||||||
|
memberLocation = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fLoader == NULL) {
|
||||||
|
fLoader = new(std::nothrow)ValueLoader(*valueLoader);
|
||||||
|
if (fLoader == NULL)
|
||||||
|
return B_NO_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
status_t
|
||||||
|
BListValueNode::CreateChildren()
|
||||||
|
{
|
||||||
|
if (fChildrenCreated)
|
||||||
|
return B_OK;
|
||||||
|
|
||||||
|
if (fItemCountType != NULL) {
|
||||||
|
BListItemCountNodeChild* countChild = new(std::nothrow)
|
||||||
|
BListItemCountNodeChild(fItemCountLocation, this, fItemCountType);
|
||||||
|
|
||||||
|
if (countChild == NULL)
|
||||||
|
return B_NO_MEMORY;
|
||||||
|
|
||||||
|
countChild->SetContainer(fContainer);
|
||||||
|
fChildren.AddItem(countChild);
|
||||||
|
}
|
||||||
|
|
||||||
|
BReference<Type> addressTypeRef;
|
||||||
|
Type* type = NULL;
|
||||||
|
CompoundType* objectType = dynamic_cast<CompoundType*>(fType);
|
||||||
|
if (objectType->CountTemplateParameters() != 0) {
|
||||||
|
AddressType* addressType = NULL;
|
||||||
|
status_t result = objectType->TemplateParameterAt(0)->GetType()
|
||||||
|
->CreateDerivedAddressType(DERIVED_TYPE_POINTER, addressType);
|
||||||
|
if (result != B_OK)
|
||||||
|
return result;
|
||||||
|
|
||||||
|
type = addressType;
|
||||||
|
addressTypeRef.SetTo(type, true);
|
||||||
|
} else {
|
||||||
|
BString typeName;
|
||||||
|
TypeLookupConstraints constraints;
|
||||||
|
constraints.SetTypeKind(TYPE_ADDRESS);
|
||||||
|
constraints.SetBaseTypeName("void");
|
||||||
|
status_t result = fLoader->LookupTypeByName(typeName, constraints, type);
|
||||||
|
if (result != B_OK)
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int32 i = 0; i < fItemCount && i < kMaxArrayElementCount; i++)
|
||||||
|
{
|
||||||
|
BListElementNodeChild* child =
|
||||||
|
new(std::nothrow) BListElementNodeChild(this, i, type);
|
||||||
|
if (child == NULL)
|
||||||
|
return B_NO_MEMORY;
|
||||||
|
child->SetContainer(fContainer);
|
||||||
|
fChildren.AddItem(child);
|
||||||
|
}
|
||||||
|
|
||||||
|
fChildrenCreated = true;
|
||||||
|
|
||||||
|
if (fContainer != NULL)
|
||||||
|
fContainer->NotifyValueNodeChildrenCreated(this);
|
||||||
|
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int32
|
||||||
|
BListValueNode::CountChildren() const
|
||||||
|
{
|
||||||
|
return fChildren.CountItems();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ValueNodeChild*
|
||||||
|
BListValueNode::ChildAt(int32 index) const
|
||||||
|
{
|
||||||
|
return fChildren.ItemAt(index);
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012, Rene Gollent, rene@gollent.com.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
#ifndef BLIST_VALUE_NODE_H
|
||||||
|
#define BLIST_VALUE_NODE_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <List.h>
|
||||||
|
#include <Variant.h>
|
||||||
|
|
||||||
|
#include <ObjectList.h>
|
||||||
|
|
||||||
|
#include "ValueLocation.h"
|
||||||
|
#include "ValueNode.h"
|
||||||
|
|
||||||
|
|
||||||
|
class CompoundType;
|
||||||
|
|
||||||
|
|
||||||
|
class BListValueNode : public ValueNode {
|
||||||
|
public:
|
||||||
|
BListValueNode(ValueNodeChild* nodeChild,
|
||||||
|
Type* type);
|
||||||
|
virtual ~BListValueNode();
|
||||||
|
|
||||||
|
virtual Type* GetType() const;
|
||||||
|
virtual status_t ResolvedLocationAndValue(
|
||||||
|
ValueLoader* valueLoader,
|
||||||
|
ValueLocation*& _location,
|
||||||
|
Value*& _value);
|
||||||
|
|
||||||
|
virtual bool ChildCreationNeedsValue() const
|
||||||
|
{ return true; }
|
||||||
|
virtual status_t CreateChildren();
|
||||||
|
virtual int32 CountChildren() const;
|
||||||
|
virtual ValueNodeChild* ChildAt(int32 index) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
class BListElementNodeChild;
|
||||||
|
class BListItemCountNodeChild;
|
||||||
|
|
||||||
|
// for GCC2
|
||||||
|
friend class BListElementNodeChild;
|
||||||
|
friend class BListItemCountNodeChild;
|
||||||
|
|
||||||
|
typedef BObjectList<ValueNodeChild> ChildNodeList;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
Type* fType;
|
||||||
|
ChildNodeList fChildren;
|
||||||
|
ValueLoader* fLoader;
|
||||||
|
BVariant fDataLocation;
|
||||||
|
BVariant fItemCountLocation;
|
||||||
|
Type* fItemCountType;
|
||||||
|
int32 fItemCount;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // BLIST_VALUE_NODE_H
|
||||||
@@ -221,6 +221,12 @@ PartitionListRow::PartitionListRow(BPartition* partition)
|
|||||||
if (partition->ContainsFileSystem()) {
|
if (partition->ContainsFileSystem()) {
|
||||||
SetField(new BStringField(partition->ContentType()), kFilesystemColumn);
|
SetField(new BStringField(partition->ContentType()), kFilesystemColumn);
|
||||||
SetField(new BStringField(partition->ContentName()), kVolumeNameColumn);
|
SetField(new BStringField(partition->ContentName()), kVolumeNameColumn);
|
||||||
|
} else if (partition->IsDevice()) {
|
||||||
|
if (partition->Name() != NULL && partition->Name()[0])
|
||||||
|
SetField(new BStringField(partition->Name()), kVolumeNameColumn);
|
||||||
|
else
|
||||||
|
SetField(new BStringField(kUnavailableString), kVolumeNameColumn);
|
||||||
|
SetField(new BStringField(kUnavailableString), kFilesystemColumn);
|
||||||
} else if (partition->CountChildren() > 0) {
|
} else if (partition->CountChildren() > 0) {
|
||||||
SetField(new BStringField(kUnavailableString), kFilesystemColumn);
|
SetField(new BStringField(kUnavailableString), kFilesystemColumn);
|
||||||
SetField(new BStringField(kUnavailableString), kVolumeNameColumn);
|
SetField(new BStringField(kUnavailableString), kVolumeNameColumn);
|
||||||
|
|||||||
@@ -150,13 +150,32 @@ ExpanderWindow::ValidateDest()
|
|||||||
BVolume volume;
|
BVolume volume;
|
||||||
if (!entry.Exists()) {
|
if (!entry.Exists()) {
|
||||||
BAlert* alert = new BAlert("destAlert",
|
BAlert* alert = new BAlert("destAlert",
|
||||||
B_TRANSLATE("The destination folder does not exist."),
|
B_TRANSLATE("Destination folder doesn't exist. "
|
||||||
|
"Would you like to create it?"),
|
||||||
|
B_TRANSLATE("Create"), B_TRANSLATE("Cancel"), NULL,
|
||||||
|
B_WIDTH_AS_USUAL, B_EVEN_SPACING, B_WARNING_ALERT);
|
||||||
|
alert->SetShortcut(0, B_ESCAPE);
|
||||||
|
|
||||||
|
if (alert->Go() != 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (create_directory(fDestText->Text(), 0755) != B_OK) {
|
||||||
|
BAlert* alert = new BAlert("stopAlert",
|
||||||
|
B_TRANSLATE("Failed to create the destination folder."),
|
||||||
B_TRANSLATE("Cancel"), NULL, NULL,
|
B_TRANSLATE("Cancel"), NULL, NULL,
|
||||||
B_WIDTH_AS_USUAL, B_EVEN_SPACING, B_WARNING_ALERT);
|
B_WIDTH_AS_USUAL, B_EVEN_SPACING, B_WARNING_ALERT);
|
||||||
alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
|
alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
|
||||||
alert->Go();
|
alert->Go();
|
||||||
return false;
|
return false;
|
||||||
} else if (!entry.IsDirectory()) {
|
}
|
||||||
|
|
||||||
|
BEntry newEntry(fDestText->Text(), true);
|
||||||
|
newEntry.GetRef(&fDestRef);
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!entry.IsDirectory()) {
|
||||||
BAlert* alert = new BAlert("destAlert",
|
BAlert* alert = new BAlert("destAlert",
|
||||||
B_TRANSLATE("The destination is not a folder."),
|
B_TRANSLATE("The destination is not a folder."),
|
||||||
B_TRANSLATE("Cancel"), NULL, NULL,
|
B_TRANSLATE("Cancel"), NULL, NULL,
|
||||||
@@ -164,7 +183,9 @@ ExpanderWindow::ValidateDest()
|
|||||||
alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
|
alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
|
||||||
alert->Go();
|
alert->Go();
|
||||||
return false;
|
return false;
|
||||||
} else if (entry.GetVolume(&volume) != B_OK || volume.IsReadOnly()) {
|
}
|
||||||
|
|
||||||
|
if (entry.GetVolume(&volume) != B_OK || volume.IsReadOnly()) {
|
||||||
BAlert* alert = new BAlert("destAlert",
|
BAlert* alert = new BAlert("destAlert",
|
||||||
B_TRANSLATE("The destination is read only."),
|
B_TRANSLATE("The destination is read only."),
|
||||||
B_TRANSLATE("Cancel"), NULL, NULL, B_WIDTH_AS_USUAL,
|
B_TRANSLATE("Cancel"), NULL, NULL, B_WIDTH_AS_USUAL,
|
||||||
@@ -172,11 +193,11 @@ ExpanderWindow::ValidateDest()
|
|||||||
alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
|
alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
|
||||||
alert->Go();
|
alert->Go();
|
||||||
return false;
|
return false;
|
||||||
} else {
|
}
|
||||||
|
|
||||||
entry.GetRef(&fDestRef);
|
entry.GetRef(&fDestRef);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ SudokuField::Dump()
|
|||||||
for (uint32 x = 0; x < fSize; x++) {
|
for (uint32 x = 0; x < fSize; x++) {
|
||||||
if (x != 0 && x % fBlockSize == 0)
|
if (x != 0 && x % fBlockSize == 0)
|
||||||
putchar(' ');
|
putchar(' ');
|
||||||
printf("%lu", ValueAt(x, y));
|
printf("%" B_PRIu32, ValueAt(x, y));
|
||||||
}
|
}
|
||||||
putchar('\n');
|
putchar('\n');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2007-2011, Axel Dörfler, axeld@pinc-software.de.
|
* Copyright 2007-2012, Axel Dörfler, axeld@pinc-software.de.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -161,7 +161,7 @@ SudokuGenerator::Generate(SudokuField* target, uint32 fieldsLeft,
|
|||||||
if (removeCount <= 0 || *quit)
|
if (removeCount <= 0 || *quit)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
printf(" remove count = %ld\n", removeCount);
|
printf(" remove count = %" B_PRId32 "\n", removeCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
// set the remaining values to be initial values
|
// set the remaining values to be initial values
|
||||||
|
|||||||
@@ -110,10 +110,10 @@ void
|
|||||||
SudokuView::InitObject(const BMessage* archive)
|
SudokuView::InitObject(const BMessage* archive)
|
||||||
{
|
{
|
||||||
fField = NULL;
|
fField = NULL;
|
||||||
fShowHintX = ~0UL;
|
fShowHintX = UINT32_MAX;
|
||||||
fValueHintValue = ~0UL;
|
fValueHintValue = UINT32_MAX;
|
||||||
fLastHintValue = ~0UL;
|
fLastHintValue = UINT32_MAX;
|
||||||
fLastField = ~0UL;
|
fLastField = UINT32_MAX;
|
||||||
fKeyboardX = 0;
|
fKeyboardX = 0;
|
||||||
fKeyboardY = 0;
|
fKeyboardY = 0;
|
||||||
fShowKeyboardFocus = false;
|
fShowKeyboardFocus = false;
|
||||||
@@ -220,7 +220,7 @@ SudokuView::SetTo(entry_ref& ref)
|
|||||||
|
|
||||||
_PushUndo();
|
_PushUndo();
|
||||||
status = fField->SetTo(_BaseCharacter(), buffer);
|
status = fField->SetTo(_BaseCharacter(), buffer);
|
||||||
fValueHintValue = ~0UL;
|
fValueHintValue = UINT32_MAX;
|
||||||
Invalidate();
|
Invalidate();
|
||||||
fclose(file);
|
fclose(file);
|
||||||
return status;
|
return status;
|
||||||
@@ -243,7 +243,7 @@ SudokuView::SetTo(const char* data)
|
|||||||
|
|
||||||
_PushUndo();
|
_PushUndo();
|
||||||
status = fField->SetTo(_BaseCharacter(), buffer);
|
status = fField->SetTo(_BaseCharacter(), buffer);
|
||||||
fValueHintValue = ~0UL;
|
fValueHintValue = UINT32_MAX;
|
||||||
Invalidate();
|
Invalidate();
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
@@ -260,7 +260,7 @@ SudokuView::SetTo(SudokuField* field)
|
|||||||
fField = field;
|
fField = field;
|
||||||
|
|
||||||
fBlockSize = fField->BlockSize();
|
fBlockSize = fField->BlockSize();
|
||||||
fValueHintValue = ~0UL;
|
fValueHintValue = UINT32_MAX;
|
||||||
FrameResized(0, 0);
|
FrameResized(0, 0);
|
||||||
Invalidate();
|
Invalidate();
|
||||||
return B_OK;
|
return B_OK;
|
||||||
@@ -757,12 +757,12 @@ SudokuView::_SetValueHintValue(uint32 value)
|
|||||||
if (value == fValueHintValue)
|
if (value == fValueHintValue)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (fValueHintValue != ~0UL)
|
if (fValueHintValue != UINT32_MAX)
|
||||||
_InvalidateValue(fValueHintValue, true);
|
_InvalidateValue(fValueHintValue, true);
|
||||||
|
|
||||||
fValueHintValue = value;
|
fValueHintValue = value;
|
||||||
|
|
||||||
if (fValueHintValue != ~0UL)
|
if (fValueHintValue != UINT32_MAX)
|
||||||
_InvalidateValue(fValueHintValue, true);
|
_InvalidateValue(fValueHintValue, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -770,13 +770,13 @@ SudokuView::_SetValueHintValue(uint32 value)
|
|||||||
void
|
void
|
||||||
SudokuView::_RemoveHint()
|
SudokuView::_RemoveHint()
|
||||||
{
|
{
|
||||||
if (fShowHintX == ~0UL)
|
if (fShowHintX == UINT32_MAX)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
uint32 x = fShowHintX;
|
uint32 x = fShowHintX;
|
||||||
uint32 y = fShowHintY;
|
uint32 y = fShowHintY;
|
||||||
fShowHintX = ~0;
|
fShowHintX = UINT32_MAX;
|
||||||
fShowHintY = ~0;
|
fShowHintY = UINT32_MAX;
|
||||||
|
|
||||||
_InvalidateField(x, y);
|
_InvalidateField(x, y);
|
||||||
}
|
}
|
||||||
@@ -912,7 +912,7 @@ SudokuView::MouseDown(BPoint where)
|
|||||||
fField->SetHintMaskAt(x, y, hintMask);
|
fField->SetHintMaskAt(x, y, hintMask);
|
||||||
|
|
||||||
if (value + 1 != fValueHintValue) {
|
if (value + 1 != fValueHintValue) {
|
||||||
_SetValueHintValue(~0UL);
|
_SetValueHintValue(UINT32_MAX);
|
||||||
_InvalidateHintField(x, y, hintX, hintY);
|
_InvalidateHintField(x, y, hintX, hintY);
|
||||||
} else
|
} else
|
||||||
_InvalidateField(x, y);
|
_InvalidateField(x, y);
|
||||||
@@ -1107,7 +1107,7 @@ SudokuView::MessageReceived(BMessage* message)
|
|||||||
solver.SetTo(fField);
|
solver.SetTo(fField);
|
||||||
bigtime_t start = system_time();
|
bigtime_t start = system_time();
|
||||||
solver.ComputeSolutions();
|
solver.ComputeSolutions();
|
||||||
printf("found %ld solutions in %g msecs\n",
|
printf("found %" B_PRIu32 " solutions in %g msecs\n",
|
||||||
solver.CountSolutions(), (system_time() - start) / 1000.0);
|
solver.CountSolutions(), (system_time() - start) / 1000.0);
|
||||||
if (solver.CountSolutions() > 0) {
|
if (solver.CountSolutions() > 0) {
|
||||||
_PushUndo();
|
_PushUndo();
|
||||||
@@ -1129,7 +1129,7 @@ SudokuView::MessageReceived(BMessage* message)
|
|||||||
solver.SetTo(fField);
|
solver.SetTo(fField);
|
||||||
bigtime_t start = system_time();
|
bigtime_t start = system_time();
|
||||||
solver.ComputeSolutions();
|
solver.ComputeSolutions();
|
||||||
printf("found %ld solutions in %g msecs\n",
|
printf("found %" B_PRIu32 " solutions in %g msecs\n",
|
||||||
solver.CountSolutions(), (system_time() - start) / 1000.0);
|
solver.CountSolutions(), (system_time() - start) / 1000.0);
|
||||||
if (solver.CountSolutions() > 0) {
|
if (solver.CountSolutions() > 0) {
|
||||||
_PushUndo();
|
_PushUndo();
|
||||||
|
|||||||
@@ -96,7 +96,8 @@ private:
|
|||||||
void _InvalidateField(uint32 x, uint32 y);
|
void _InvalidateField(uint32 x, uint32 y);
|
||||||
void _InvalidateValue(uint32 value,
|
void _InvalidateValue(uint32 value,
|
||||||
bool invalidateHint = false,
|
bool invalidateHint = false,
|
||||||
uint32 x = ~0UL, uint32 y = ~0UL);
|
uint32 x = UINT32_MAX,
|
||||||
|
uint32 y = UINT32_MAX);
|
||||||
void _InvalidateKeyboardFocus(uint32 x, uint32 y);
|
void _InvalidateKeyboardFocus(uint32 x, uint32 y);
|
||||||
void _InsertKey(char rawKey, int32 modifiers);
|
void _InsertKey(char rawKey, int32 modifiers);
|
||||||
void _SetValueHintValue(uint32 value);
|
void _SetValueHintValue(uint32 value);
|
||||||
|
|||||||
@@ -100,10 +100,10 @@ AppearancePrefView::AppearancePrefView(const char* name,
|
|||||||
fFont = new BMenuField(B_TRANSLATE("Font:"), fontMenu);
|
fFont = new BMenuField(B_TRANSLATE("Font:"), fontMenu);
|
||||||
fFontSize = new BMenuField(B_TRANSLATE("Size:"), sizeMenu);
|
fFontSize = new BMenuField(B_TRANSLATE("Size:"), sizeMenu);
|
||||||
|
|
||||||
BPopUpMenu* schemasPopUp = _MakeColorSchemaMenu(MSG_COLOR_SCHEMA_CHANGED,
|
BPopUpMenu* schemesPopUp = _MakeColorSchemeMenu(MSG_COLOR_SCHEME_CHANGED,
|
||||||
gPredefinedSchemas, gPredefinedSchemas[0]);
|
gPredefinedColorSchemes, gPredefinedColorSchemes[0]);
|
||||||
fColorSchemaField = new BMenuField(B_TRANSLATE("Color schema:"),
|
fColorSchemeField = new BMenuField(B_TRANSLATE("Color scheme:"),
|
||||||
schemasPopUp);
|
schemesPopUp);
|
||||||
|
|
||||||
BPopUpMenu* colorsPopUp = _MakeMenu(MSG_COLOR_FIELD_CHANGED, kColorTable,
|
BPopUpMenu* colorsPopUp = _MakeMenu(MSG_COLOR_FIELD_CHANGED, kColorTable,
|
||||||
kColorTable[0]);
|
kColorTable[0]);
|
||||||
@@ -139,8 +139,8 @@ AppearancePrefView::AppearancePrefView(const char* name,
|
|||||||
.Add(fFont->CreateMenuBarLayoutItem(), 1, 2)
|
.Add(fFont->CreateMenuBarLayoutItem(), 1, 2)
|
||||||
.Add(fFontSize->CreateLabelLayoutItem(), 0, 3)
|
.Add(fFontSize->CreateLabelLayoutItem(), 0, 3)
|
||||||
.Add(fFontSize->CreateMenuBarLayoutItem(), 1, 3)
|
.Add(fFontSize->CreateMenuBarLayoutItem(), 1, 3)
|
||||||
.Add(fColorSchemaField->CreateLabelLayoutItem(), 0, 4)
|
.Add(fColorSchemeField->CreateLabelLayoutItem(), 0, 4)
|
||||||
.Add(fColorSchemaField->CreateMenuBarLayoutItem(), 1, 4)
|
.Add(fColorSchemeField->CreateMenuBarLayoutItem(), 1, 4)
|
||||||
.Add(fColorField->CreateLabelLayoutItem(), 0, 5)
|
.Add(fColorField->CreateLabelLayoutItem(), 0, 5)
|
||||||
.Add(fColorField->CreateMenuBarLayoutItem(), 1, 5)
|
.Add(fColorField->CreateMenuBarLayoutItem(), 1, 5)
|
||||||
.End()
|
.End()
|
||||||
@@ -155,7 +155,7 @@ AppearancePrefView::AppearancePrefView(const char* name,
|
|||||||
fFont->SetAlignment(B_ALIGN_RIGHT);
|
fFont->SetAlignment(B_ALIGN_RIGHT);
|
||||||
fFontSize->SetAlignment(B_ALIGN_RIGHT);
|
fFontSize->SetAlignment(B_ALIGN_RIGHT);
|
||||||
fColorField->SetAlignment(B_ALIGN_RIGHT);
|
fColorField->SetAlignment(B_ALIGN_RIGHT);
|
||||||
fColorSchemaField->SetAlignment(B_ALIGN_RIGHT);
|
fColorSchemeField->SetAlignment(B_ALIGN_RIGHT);
|
||||||
|
|
||||||
fTabTitle->SetText(PrefHandler::Default()->getString(PREF_TAB_TITLE));
|
fTabTitle->SetText(PrefHandler::Default()->getString(PREF_TAB_TITLE));
|
||||||
fWindowTitle->SetText(PrefHandler::Default()->getString(PREF_WINDOW_TITLE));
|
fWindowTitle->SetText(PrefHandler::Default()->getString(PREF_WINDOW_TITLE));
|
||||||
@@ -197,7 +197,7 @@ AppearancePrefView::Revert()
|
|||||||
fWarnOnExit->SetValue(PrefHandler::Default()->getBool(
|
fWarnOnExit->SetValue(PrefHandler::Default()->getBool(
|
||||||
PREF_WARN_ON_EXIT));
|
PREF_WARN_ON_EXIT));
|
||||||
|
|
||||||
fColorSchemaField->Menu()->ItemAt(0)->SetMarked(true);
|
fColorSchemeField->Menu()->ItemAt(0)->SetMarked(true);
|
||||||
fColorControl->SetValue(PrefHandler::Default()->
|
fColorControl->SetValue(PrefHandler::Default()->
|
||||||
getRGB(PREF_TEXT_FORE_COLOR));
|
getRGB(PREF_TEXT_FORE_COLOR));
|
||||||
|
|
||||||
@@ -221,12 +221,12 @@ AppearancePrefView::AttachedToWindow()
|
|||||||
|
|
||||||
fColorControl->SetTarget(this);
|
fColorControl->SetTarget(this);
|
||||||
fColorField->Menu()->SetTargetForItems(this);
|
fColorField->Menu()->SetTargetForItems(this);
|
||||||
fColorSchemaField->Menu()->SetTargetForItems(this);
|
fColorSchemeField->Menu()->SetTargetForItems(this);
|
||||||
|
|
||||||
_SetCurrentColorSchema(fColorSchemaField);
|
_SetCurrentColorScheme(fColorSchemeField);
|
||||||
bool enableCustomColors =
|
bool enableCustomColors =
|
||||||
!strcmp(fColorSchemaField->Menu()->FindMarked()->Label(),
|
strcmp(fColorSchemeField->Menu()->FindMarked()->Label(),
|
||||||
gCustomSchema.name);
|
gCustomColorScheme.name) == 0;
|
||||||
|
|
||||||
_EnableCustomColors(enableCustomColors);
|
_EnableCustomColors(enableCustomColors);
|
||||||
}
|
}
|
||||||
@@ -250,18 +250,18 @@ AppearancePrefView::MessageReceived(BMessage* msg)
|
|||||||
= pref->getString(PREF_HALF_FONT_FAMILY);
|
= pref->getString(PREF_HALF_FONT_FAMILY);
|
||||||
const char* currentStyle
|
const char* currentStyle
|
||||||
= pref->getString(PREF_HALF_FONT_STYLE);
|
= pref->getString(PREF_HALF_FONT_STYLE);
|
||||||
if (currentFamily == NULL || strcmp(currentFamily, family)
|
if (currentFamily == NULL || strcmp(currentFamily, family) != 0
|
||||||
|| currentStyle == NULL || strcmp(currentStyle, style)) {
|
|| currentStyle == NULL || strcmp(currentStyle, style) != 0) {
|
||||||
pref->setString(PREF_HALF_FONT_FAMILY, family);
|
pref->setString(PREF_HALF_FONT_FAMILY, family);
|
||||||
pref->setString(PREF_HALF_FONT_STYLE, style);
|
pref->setString(PREF_HALF_FONT_STYLE, style);
|
||||||
modified = true;
|
modified = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case MSG_HALF_SIZE_CHANGED:
|
case MSG_HALF_SIZE_CHANGED:
|
||||||
if (strcmp(PrefHandler::Default()->getString(PREF_HALF_FONT_SIZE),
|
if (strcmp(PrefHandler::Default()->getString(PREF_HALF_FONT_SIZE),
|
||||||
fFontSize->Menu()->FindMarked()->Label())) {
|
fFontSize->Menu()->FindMarked()->Label()) != 0) {
|
||||||
|
|
||||||
PrefHandler::Default()->setString(PREF_HALF_FONT_SIZE,
|
PrefHandler::Default()->setString(PREF_HALF_FONT_SIZE,
|
||||||
fFontSize->Menu()->FindMarked()->Label());
|
fFontSize->Menu()->FindMarked()->Label());
|
||||||
modified = true;
|
modified = true;
|
||||||
@@ -281,17 +281,17 @@ AppearancePrefView::MessageReceived(BMessage* msg)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MSG_COLOR_SCHEMA_CHANGED:
|
case MSG_COLOR_SCHEME_CHANGED:
|
||||||
{
|
{
|
||||||
color_schema* newSchema = NULL;
|
color_scheme* newScheme = NULL;
|
||||||
if (msg->FindPointer("color_schema",
|
if (msg->FindPointer("color_scheme",
|
||||||
(void**)&newSchema) == B_OK) {
|
(void**)&newScheme) == B_OK) {
|
||||||
|
|
||||||
if (newSchema == &gCustomSchema)
|
if (newScheme == &gCustomColorScheme)
|
||||||
_EnableCustomColors(true);
|
_EnableCustomColors(true);
|
||||||
else
|
else
|
||||||
_EnableCustomColors(false);
|
_EnableCustomColors(false);
|
||||||
_ChangeColorSchema(newSchema);
|
_ChangeColorScheme(newScheme);
|
||||||
modified = true;
|
modified = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -366,41 +366,46 @@ AppearancePrefView::_EnableCustomColors(bool enable)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
AppearancePrefView::_ChangeColorSchema(color_schema* schema)
|
AppearancePrefView::_ChangeColorScheme(color_scheme* scheme)
|
||||||
{
|
{
|
||||||
PrefHandler* pref = PrefHandler::Default();
|
PrefHandler* pref = PrefHandler::Default();
|
||||||
|
|
||||||
pref->setRGB(PREF_TEXT_FORE_COLOR, schema->text_fore_color);
|
pref->setRGB(PREF_TEXT_FORE_COLOR, scheme->text_fore_color);
|
||||||
pref->setRGB(PREF_TEXT_BACK_COLOR, schema->text_back_color);
|
pref->setRGB(PREF_TEXT_BACK_COLOR, scheme->text_back_color);
|
||||||
pref->setRGB(PREF_SELECT_FORE_COLOR, schema->select_fore_color);
|
pref->setRGB(PREF_SELECT_FORE_COLOR, scheme->select_fore_color);
|
||||||
pref->setRGB(PREF_SELECT_BACK_COLOR, schema->select_back_color);
|
pref->setRGB(PREF_SELECT_BACK_COLOR, scheme->select_back_color);
|
||||||
|
pref->setRGB(PREF_CURSOR_FORE_COLOR, scheme->cursor_fore_color);
|
||||||
|
pref->setRGB(PREF_CURSOR_BACK_COLOR, scheme->cursor_back_color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
AppearancePrefView::_SetCurrentColorSchema(BMenuField* field)
|
AppearancePrefView::_SetCurrentColorScheme(BMenuField* field)
|
||||||
{
|
{
|
||||||
PrefHandler* pref = PrefHandler::Default();
|
PrefHandler* pref = PrefHandler::Default();
|
||||||
|
|
||||||
gCustomSchema.text_fore_color = pref->getRGB(PREF_TEXT_FORE_COLOR);
|
gCustomColorScheme.text_fore_color = pref->getRGB(PREF_TEXT_FORE_COLOR);
|
||||||
gCustomSchema.text_back_color = pref->getRGB(PREF_TEXT_BACK_COLOR);
|
gCustomColorScheme.text_back_color = pref->getRGB(PREF_TEXT_BACK_COLOR);
|
||||||
gCustomSchema.select_fore_color = pref->getRGB(PREF_SELECT_FORE_COLOR);
|
gCustomColorScheme.select_fore_color = pref->getRGB(PREF_SELECT_FORE_COLOR);
|
||||||
gCustomSchema.select_back_color = pref->getRGB(PREF_SELECT_BACK_COLOR);
|
gCustomColorScheme.select_back_color = pref->getRGB(PREF_SELECT_BACK_COLOR);
|
||||||
|
gCustomColorScheme.cursor_fore_color = pref->getRGB(PREF_CURSOR_FORE_COLOR);
|
||||||
|
gCustomColorScheme.cursor_back_color = pref->getRGB(PREF_CURSOR_BACK_COLOR);
|
||||||
|
|
||||||
const char* currentSchemaName = NULL;
|
const char* currentSchemeName = NULL;
|
||||||
|
|
||||||
color_schema** schemas = const_cast<color_schema**>(gPredefinedSchemas);
|
color_scheme** schemes
|
||||||
while (*schemas) {
|
= const_cast<color_scheme**>(gPredefinedColorSchemes);
|
||||||
if (gCustomSchema == **schemas) {
|
while (*schemes) {
|
||||||
currentSchemaName = (*schemas)->name;
|
if (gCustomColorScheme == **schemes) {
|
||||||
|
currentSchemeName = (*schemes)->name;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
schemas++;
|
schemes++;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int32 i = 0; i < fColorSchemaField->Menu()->CountItems(); i++) {
|
for (int32 i = 0; i < fColorSchemeField->Menu()->CountItems(); i++) {
|
||||||
BMenuItem* item = fColorSchemaField->Menu()->ItemAt(i);
|
BMenuItem* item = fColorSchemeField->Menu()->ItemAt(i);
|
||||||
if (!strcmp(item->Label(), currentSchemaName)) {
|
if (strcmp(item->Label(), currentSchemeName) == 0) {
|
||||||
item->SetMarked(true);
|
item->SetMarked(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -435,8 +440,8 @@ AppearancePrefView::_MakeFontMenu(uint32 command,
|
|||||||
BMenuItem* item = new BMenuItem(itemLabel,
|
BMenuItem* item = new BMenuItem(itemLabel,
|
||||||
message);
|
message);
|
||||||
menu->AddItem(item);
|
menu->AddItem(item);
|
||||||
if (!strcmp(defaultFamily, family)
|
if (strcmp(defaultFamily, family) == 0
|
||||||
&& !strcmp(defaultStyle, style))
|
&& strcmp(defaultStyle, style) == 0)
|
||||||
item->SetMarked(true);
|
item->SetMarked(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -497,7 +502,7 @@ AppearancePrefView::_MakeMenu(uint32 msg, const char** items,
|
|||||||
|
|
||||||
int32 i = 0;
|
int32 i = 0;
|
||||||
while (*items) {
|
while (*items) {
|
||||||
if (!strcmp((*items), ""))
|
if (strcmp((*items), "") == 0)
|
||||||
menu->AddSeparatorItem();
|
menu->AddSeparatorItem();
|
||||||
else {
|
else {
|
||||||
BMessage* message = new BMessage(msg);
|
BMessage* message = new BMessage(msg);
|
||||||
@@ -517,18 +522,18 @@ AppearancePrefView::_MakeMenu(uint32 msg, const char** items,
|
|||||||
|
|
||||||
|
|
||||||
/*static*/ BPopUpMenu*
|
/*static*/ BPopUpMenu*
|
||||||
AppearancePrefView::_MakeColorSchemaMenu(uint32 msg, const color_schema** items,
|
AppearancePrefView::_MakeColorSchemeMenu(uint32 msg, const color_scheme** items,
|
||||||
const color_schema* defaultItemName)
|
const color_scheme* defaultItemName)
|
||||||
{
|
{
|
||||||
BPopUpMenu* menu = new BPopUpMenu("");
|
BPopUpMenu* menu = new BPopUpMenu("");
|
||||||
|
|
||||||
int32 i = 0;
|
int32 i = 0;
|
||||||
while (*items) {
|
while (*items) {
|
||||||
if (!strcmp((*items)->name, ""))
|
if (strcmp((*items)->name, "") == 0)
|
||||||
menu->AddSeparatorItem();
|
menu->AddSeparatorItem();
|
||||||
else {
|
else {
|
||||||
BMessage* message = new BMessage(msg);
|
BMessage* message = new BMessage(msg);
|
||||||
message->AddPointer("color_schema", (const void*)*items);
|
message->AddPointer("color_scheme", (const void*)*items);
|
||||||
menu->AddItem(new BMenuItem((*items)->name, message));
|
menu->AddItem(new BMenuItem((*items)->name, message));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ static const uint32 MSG_FULL_FONT_CHANGED = 'mcff';
|
|||||||
static const uint32 MSG_FULL_SIZE_CHANGED = 'mcfs';
|
static const uint32 MSG_FULL_SIZE_CHANGED = 'mcfs';
|
||||||
static const uint32 MSG_COLOR_FIELD_CHANGED = 'mccf';
|
static const uint32 MSG_COLOR_FIELD_CHANGED = 'mccf';
|
||||||
static const uint32 MSG_COLOR_CHANGED = 'mcbc';
|
static const uint32 MSG_COLOR_CHANGED = 'mcbc';
|
||||||
static const uint32 MSG_COLOR_SCHEMA_CHANGED = 'mccs';
|
static const uint32 MSG_COLOR_SCHEME_CHANGED = 'mccs';
|
||||||
|
|
||||||
static const uint32 MSG_TAB_TITLE_SETTING_CHANGED = 'mtts';
|
static const uint32 MSG_TAB_TITLE_SETTING_CHANGED = 'mtts';
|
||||||
static const uint32 MSG_WINDOW_TITLE_SETTING_CHANGED = 'mwts';
|
static const uint32 MSG_WINDOW_TITLE_SETTING_CHANGED = 'mwts';
|
||||||
@@ -32,7 +32,7 @@ static const uint32 MSG_HISTORY_CHANGED = 'mhst';
|
|||||||
static const uint32 MSG_PREF_MODIFIED = 'mpmo';
|
static const uint32 MSG_PREF_MODIFIED = 'mpmo';
|
||||||
|
|
||||||
|
|
||||||
struct color_schema;
|
struct color_scheme;
|
||||||
class BCheckBox;
|
class BCheckBox;
|
||||||
class BColorControl;
|
class BColorControl;
|
||||||
class BMenu;
|
class BMenu;
|
||||||
@@ -56,8 +56,8 @@ public:
|
|||||||
private:
|
private:
|
||||||
void _EnableCustomColors(bool enable);
|
void _EnableCustomColors(bool enable);
|
||||||
|
|
||||||
void _ChangeColorSchema(color_schema* schema);
|
void _ChangeColorScheme(color_scheme* scheme);
|
||||||
void _SetCurrentColorSchema(BMenuField* field);
|
void _SetCurrentColorScheme(BMenuField* field);
|
||||||
|
|
||||||
static BMenu* _MakeFontMenu(uint32 command,
|
static BMenu* _MakeFontMenu(uint32 command,
|
||||||
const char* defaultFamily,
|
const char* defaultFamily,
|
||||||
@@ -68,16 +68,16 @@ private:
|
|||||||
static BPopUpMenu* _MakeMenu(uint32 msg, const char** items,
|
static BPopUpMenu* _MakeMenu(uint32 msg, const char** items,
|
||||||
const char* defaultItem);
|
const char* defaultItem);
|
||||||
|
|
||||||
static BPopUpMenu* _MakeColorSchemaMenu(uint32 msg,
|
static BPopUpMenu* _MakeColorSchemeMenu(uint32 msg,
|
||||||
const color_schema** schemas,
|
const color_scheme** schemes,
|
||||||
const color_schema* defaultItemName);
|
const color_scheme* defaultItemName);
|
||||||
|
|
||||||
BCheckBox* fBlinkCursor;
|
BCheckBox* fBlinkCursor;
|
||||||
BCheckBox* fWarnOnExit;
|
BCheckBox* fWarnOnExit;
|
||||||
BMenuField* fFont;
|
BMenuField* fFont;
|
||||||
BMenuField* fFontSize;
|
BMenuField* fFontSize;
|
||||||
|
|
||||||
BMenuField* fColorSchemaField;
|
BMenuField* fColorSchemeField;
|
||||||
BMenuField* fColorField;
|
BMenuField* fColorField;
|
||||||
BColorControl* fColorControl;
|
BColorControl* fColorControl;
|
||||||
|
|
||||||
|
|||||||
@@ -1,23 +1,27 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010, Haiku, Inc.
|
* Copyright 2010-2012, Haiku, Inc. All rights reserved.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "Colors.h"
|
#include "Colors.h"
|
||||||
|
|
||||||
#include <Catalog.h>
|
#include <Catalog.h>
|
||||||
|
|
||||||
|
|
||||||
#undef B_TRANSLATION_CONTEXT
|
#undef B_TRANSLATION_CONTEXT
|
||||||
#define B_TRANSLATION_CONTEXT "Terminal colors schema"
|
#define B_TRANSLATION_CONTEXT "Terminal colors scheme"
|
||||||
|
|
||||||
|
|
||||||
|
// Standard colors
|
||||||
const rgb_color kBlack= { 0, 0, 0, 255 };
|
const rgb_color kBlack= { 0, 0, 0, 255 };
|
||||||
const rgb_color kWhite = { 255, 255, 255, 255 };
|
|
||||||
const rgb_color kGreen = { 0, 255, 0, 255 };
|
const rgb_color kGreen = { 0, 255, 0, 255 };
|
||||||
|
const rgb_color kWhite = { 255, 255, 255, 255 };
|
||||||
|
const rgb_color kYellow = { 255, 255, 0, 255 };
|
||||||
|
|
||||||
const struct color_schema kBlackOnWhite = {
|
|
||||||
B_TRANSLATE("Black on White"),
|
const struct color_scheme kColorSchemeDefault = {
|
||||||
|
B_TRANSLATE("Default"),
|
||||||
kBlack,
|
kBlack,
|
||||||
kWhite,
|
kWhite,
|
||||||
kWhite,
|
kWhite,
|
||||||
@@ -26,9 +30,18 @@ const struct color_schema kBlackOnWhite = {
|
|||||||
kBlack
|
kBlack
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const struct color_scheme kColorSchemeBlue = {
|
||||||
|
B_TRANSLATE("Blue"),
|
||||||
|
kYellow,
|
||||||
|
{ 0, 0, 139, 255 },
|
||||||
|
kBlack,
|
||||||
|
kWhite,
|
||||||
|
kBlack,
|
||||||
|
{ 0, 139, 139, 255 },
|
||||||
|
};
|
||||||
|
|
||||||
const struct color_schema kWhiteOnBlack = {
|
const struct color_scheme kColorSchemeMidnight = {
|
||||||
B_TRANSLATE("White on Black"),
|
B_TRANSLATE("Midnight"),
|
||||||
kWhite,
|
kWhite,
|
||||||
kBlack,
|
kBlack,
|
||||||
kBlack,
|
kBlack,
|
||||||
@@ -37,8 +50,18 @@ const struct color_schema kWhiteOnBlack = {
|
|||||||
kWhite
|
kWhite
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct color_schema kGreenOnBlack = {
|
const struct color_scheme kColorSchemeProfessional = {
|
||||||
B_TRANSLATE("Green on Black"),
|
B_TRANSLATE("Professional"),
|
||||||
|
kWhite,
|
||||||
|
{ 8, 8, 8, 255 },
|
||||||
|
{ 50, 50, 50, 255 },
|
||||||
|
kWhite,
|
||||||
|
kWhite,
|
||||||
|
{ 50, 50, 50, 255 },
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct color_scheme kColorSchemeRetro = {
|
||||||
|
B_TRANSLATE("Retro"),
|
||||||
kGreen,
|
kGreen,
|
||||||
kBlack,
|
kBlack,
|
||||||
kBlack,
|
kBlack,
|
||||||
@@ -47,28 +70,41 @@ const struct color_schema kGreenOnBlack = {
|
|||||||
kGreen
|
kGreen
|
||||||
};
|
};
|
||||||
|
|
||||||
struct color_schema gCustomSchema = {
|
const struct color_scheme kColorSchemeSlate = {
|
||||||
|
B_TRANSLATE("Slate"),
|
||||||
|
kWhite,
|
||||||
|
{ 20, 20, 28, 255 },
|
||||||
|
{ 70, 70, 70, 255 },
|
||||||
|
{ 255, 200, 0, 255 },
|
||||||
|
kWhite,
|
||||||
|
{ 70, 70, 70, 255 },
|
||||||
|
};
|
||||||
|
|
||||||
|
struct color_scheme gCustomColorScheme = {
|
||||||
B_TRANSLATE("Custom")
|
B_TRANSLATE("Custom")
|
||||||
};
|
};
|
||||||
|
|
||||||
const color_schema* gPredefinedSchemas[] = {
|
const color_scheme* gPredefinedColorSchemes[] = {
|
||||||
&kBlackOnWhite,
|
&kColorSchemeDefault,
|
||||||
&kWhiteOnBlack,
|
&kColorSchemeBlue,
|
||||||
&kGreenOnBlack,
|
&kColorSchemeMidnight,
|
||||||
&gCustomSchema,
|
&kColorSchemeProfessional,
|
||||||
|
&kColorSchemeRetro,
|
||||||
|
&kColorSchemeSlate,
|
||||||
|
&gCustomColorScheme,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
color_schema::operator==(const color_schema& schema)
|
color_scheme::operator==(const color_scheme& scheme)
|
||||||
{
|
{
|
||||||
if (text_fore_color == schema.text_fore_color
|
if (text_fore_color == scheme.text_fore_color
|
||||||
&& text_back_color == schema.text_back_color
|
&& text_back_color == scheme.text_back_color
|
||||||
&& cursor_fore_color == schema.cursor_fore_color
|
&& cursor_fore_color == scheme.cursor_fore_color
|
||||||
&& cursor_back_color == schema.cursor_back_color
|
&& cursor_back_color == scheme.cursor_back_color
|
||||||
&& select_fore_color == schema.select_fore_color
|
&& select_fore_color == scheme.select_fore_color
|
||||||
&& select_back_color == schema.select_back_color)
|
&& select_back_color == scheme.select_back_color)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010, Haiku, Inc.
|
* Copyright 2010-2012, Haiku, Inc. All rights reserved.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
#ifndef _COLORS_H
|
#ifndef _COLORS_H
|
||||||
#define _COLORS_H
|
#define _COLORS_H
|
||||||
|
|
||||||
|
|
||||||
#include <InterfaceDefs.h>
|
#include <InterfaceDefs.h>
|
||||||
|
|
||||||
struct color_schema {
|
|
||||||
|
struct color_scheme {
|
||||||
const char* name;
|
const char* name;
|
||||||
rgb_color text_fore_color;
|
rgb_color text_fore_color;
|
||||||
rgb_color text_back_color;
|
rgb_color text_back_color;
|
||||||
@@ -15,12 +17,11 @@ struct color_schema {
|
|||||||
rgb_color cursor_back_color;
|
rgb_color cursor_back_color;
|
||||||
rgb_color select_fore_color;
|
rgb_color select_fore_color;
|
||||||
rgb_color select_back_color;
|
rgb_color select_back_color;
|
||||||
bool operator==(const color_schema& color);
|
bool operator==(const color_scheme& color);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern color_scheme gCustomColorScheme;
|
||||||
extern color_schema gCustomSchema;
|
extern const color_scheme* gPredefinedColorSchemes[];
|
||||||
extern const color_schema* gPredefinedSchemas[];
|
|
||||||
|
|
||||||
|
|
||||||
#endif // _COLORS_H
|
#endif // _COLORS_H
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ static const pref_defaults kTermDefaults[] = {
|
|||||||
{ PREF_TEXT_FORE_COLOR, " 0, 0, 0" },
|
{ PREF_TEXT_FORE_COLOR, " 0, 0, 0" },
|
||||||
{ PREF_TEXT_BACK_COLOR, "255, 255, 255" },
|
{ PREF_TEXT_BACK_COLOR, "255, 255, 255" },
|
||||||
{ PREF_CURSOR_FORE_COLOR, " 0, 0, 0" },
|
{ PREF_CURSOR_FORE_COLOR, " 0, 0, 0" },
|
||||||
{ PREF_CURSOR_BACK_COLOR, "255, 200, 0" },
|
{ PREF_CURSOR_BACK_COLOR, " 0, 0, 0" },
|
||||||
{ PREF_SELECT_FORE_COLOR, "255, 255, 255" },
|
{ PREF_SELECT_FORE_COLOR, "255, 255, 255" },
|
||||||
{ PREF_SELECT_BACK_COLOR, " 0, 0, 0" },
|
{ PREF_SELECT_BACK_COLOR, " 0, 0, 0" },
|
||||||
|
|
||||||
@@ -242,7 +242,7 @@ PrefHandler::getBool(const char *key)
|
|||||||
if (value == NULL)
|
if (value == NULL)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return !strcmp(value, PREF_TRUE);
|
return strcmp(value, PREF_TRUE) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -352,7 +352,7 @@ PrefHandler::_ConfirmFont(const char *key, const BFont *fallback)
|
|||||||
if (get_font_family(i, &family) != B_OK)
|
if (get_font_family(i, &family) != B_OK)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!strcmp(family, font)) {
|
if (strcmp(family, font) == 0) {
|
||||||
// found font family: we can safely use this font
|
// found font family: we can safely use this font
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -200,7 +200,7 @@ TermApp::RefsReceived(BMessage* message)
|
|||||||
info.GetType(mimetype);
|
info.GetType(mimetype);
|
||||||
|
|
||||||
// if App opened by Pref file
|
// if App opened by Pref file
|
||||||
if (!strcmp(mimetype, PREFFILE_MIMETYPE)) {
|
if (strcmp(mimetype, PREFFILE_MIMETYPE) == 0) {
|
||||||
|
|
||||||
BEntry ent(&ref);
|
BEntry ent(&ref);
|
||||||
BPath path(&ent);
|
BPath path(&ent);
|
||||||
@@ -209,7 +209,7 @@ TermApp::RefsReceived(BMessage* message)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// if App opened by Shell Script
|
// if App opened by Shell Script
|
||||||
if (!strcmp(mimetype, "text/x-haiku-shscript")){
|
if (strcmp(mimetype, "text/x-haiku-shscript") == 0) {
|
||||||
// Not implemented.
|
// Not implemented.
|
||||||
// beep();
|
// beep();
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -1862,7 +1862,8 @@ TermView::MessageReceived(BMessage *msg)
|
|||||||
int32 encodingID;
|
int32 encodingID;
|
||||||
BMessage specifier;
|
BMessage specifier;
|
||||||
if (msg->GetCurrentSpecifier(&i, &specifier) == B_OK
|
if (msg->GetCurrentSpecifier(&i, &specifier) == B_OK
|
||||||
&& !strcmp("encoding", specifier.FindString("property", i))) {
|
&& !strcmp("encoding",
|
||||||
|
specifier.FindString("property", i)) == 0) {
|
||||||
msg->FindInt32 ("data", &encodingID);
|
msg->FindInt32 ("data", &encodingID);
|
||||||
SetEncoding(encodingID);
|
SetEncoding(encodingID);
|
||||||
msg->SendReply(B_REPLY);
|
msg->SendReply(B_REPLY);
|
||||||
@@ -1877,11 +1878,13 @@ TermView::MessageReceived(BMessage *msg)
|
|||||||
int32 i;
|
int32 i;
|
||||||
BMessage specifier;
|
BMessage specifier;
|
||||||
if (msg->GetCurrentSpecifier(&i, &specifier) == B_OK
|
if (msg->GetCurrentSpecifier(&i, &specifier) == B_OK
|
||||||
&& !strcmp("encoding", specifier.FindString("property", i))) {
|
&& strcmp("encoding",
|
||||||
|
specifier.FindString("property", i)) == 0) {
|
||||||
BMessage reply(B_REPLY);
|
BMessage reply(B_REPLY);
|
||||||
reply.AddInt32("result", Encoding());
|
reply.AddInt32("result", Encoding());
|
||||||
msg->SendReply(&reply);
|
msg->SendReply(&reply);
|
||||||
} else if (!strcmp("tty", specifier.FindString("property", i))) {
|
} else if (strcmp("tty",
|
||||||
|
specifier.FindString("property", i)) == 0) {
|
||||||
BMessage reply(B_REPLY);
|
BMessage reply(B_REPLY);
|
||||||
reply.AddString("result", TerminalName());
|
reply.AddString("result", TerminalName());
|
||||||
msg->SendReply(&reply);
|
msg->SendReply(&reply);
|
||||||
|
|||||||
@@ -839,7 +839,7 @@ TermWindow::MessageReceived(BMessage *message)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MSG_COLOR_CHANGED:
|
case MSG_COLOR_CHANGED:
|
||||||
case MSG_COLOR_SCHEMA_CHANGED:
|
case MSG_COLOR_SCHEME_CHANGED:
|
||||||
{
|
{
|
||||||
_SetTermColors(_ActiveTermViewContainerView());
|
_SetTermColors(_ActiveTermViewContainerView());
|
||||||
_ActiveTermViewContainerView()->Invalidate();
|
_ActiveTermViewContainerView()->Invalidate();
|
||||||
|
|||||||
@@ -95,6 +95,7 @@ Cache<block_run>::Cacheable *BlockRunCache::NewCacheable(block_run run)
|
|||||||
|
|
||||||
Disk::Disk(const char *deviceName, bool rawMode, off_t start, off_t stop)
|
Disk::Disk(const char *deviceName, bool rawMode, off_t start, off_t stop)
|
||||||
:
|
:
|
||||||
|
fBufferedFile(NULL),
|
||||||
fRawDiskOffset(0),
|
fRawDiskOffset(0),
|
||||||
fSize(0LL),
|
fSize(0LL),
|
||||||
fCache(this),
|
fCache(this),
|
||||||
@@ -121,6 +122,7 @@ Disk::Disk(const char *deviceName, bool rawMode, off_t start, off_t stop)
|
|||||||
//fprintf(stderr,"Could not open file: %s\n",strerror(fFile.InitCheck()));
|
//fprintf(stderr,"Could not open file: %s\n",strerror(fFile.InitCheck()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
fBufferedFile = new BBufferIO(&fFile, 1024 * 1024, false);
|
||||||
|
|
||||||
int device = open(deviceName, O_RDONLY);
|
int device = open(deviceName, O_RDONLY);
|
||||||
if (device < B_OK) {
|
if (device < B_OK) {
|
||||||
@@ -153,7 +155,7 @@ Disk::Disk(const char *deviceName, bool rawMode, off_t start, off_t stop)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fFile.ReadAt(512 + fRawDiskOffset, &fSuperBlock,
|
if (fBufferedFile->ReadAt(512 + fRawDiskOffset, &fSuperBlock,
|
||||||
sizeof(disk_super_block)) < 1)
|
sizeof(disk_super_block)) < 1)
|
||||||
fprintf(stderr,"Disk: Could not read super block\n");
|
fprintf(stderr,"Disk: Could not read super block\n");
|
||||||
|
|
||||||
@@ -163,6 +165,7 @@ Disk::Disk(const char *deviceName, bool rawMode, off_t start, off_t stop)
|
|||||||
|
|
||||||
Disk::~Disk()
|
Disk::~Disk()
|
||||||
{
|
{
|
||||||
|
delete fBufferedFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -256,7 +259,7 @@ Disk::ScanForSuperBlock(off_t start, off_t stop)
|
|||||||
if (((offset-start) % (blockSize * 100)) == 0)
|
if (((offset-start) % (blockSize * 100)) == 0)
|
||||||
printf(" %12Ld, %.2f GB %s1A\n",offset,1.0 * offset / (1024*1024*1024),escape);
|
printf(" %12Ld, %.2f GB %s1A\n",offset,1.0 * offset / (1024*1024*1024),escape);
|
||||||
|
|
||||||
ssize_t bytes = fFile.ReadAt(offset, buffer, blockSize + 1024);
|
ssize_t bytes = fBufferedFile->ReadAt(offset, buffer, blockSize + 1024);
|
||||||
if (bytes < B_OK)
|
if (bytes < B_OK)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"Could not read from device: %s\n", strerror(bytes));
|
fprintf(stderr,"Could not read from device: %s\n", strerror(bytes));
|
||||||
@@ -322,7 +325,7 @@ Disk::ScanForSuperBlock(off_t start, off_t stop)
|
|||||||
// ToDo: free the other disk infos
|
// ToDo: free the other disk infos
|
||||||
|
|
||||||
fRawDiskOffset = info->offset;
|
fRawDiskOffset = info->offset;
|
||||||
fFile.Seek(fRawDiskOffset, SEEK_SET);
|
fBufferedFile->Seek(fRawDiskOffset, SEEK_SET);
|
||||||
|
|
||||||
if (ValidateSuperBlock(info->super_block))
|
if (ValidateSuperBlock(info->super_block))
|
||||||
fSize = info->super_block.block_size * info->super_block.block_size;
|
fSize = info->super_block.block_size * info->super_block.block_size;
|
||||||
@@ -488,7 +491,7 @@ Disk::DetermineBlockSize()
|
|||||||
|
|
||||||
// read a quarter of the drive at maximum
|
// read a quarter of the drive at maximum
|
||||||
for (; offset < (fSize >> 2); offset += 1024) {
|
for (; offset < (fSize >> 2); offset += 1024) {
|
||||||
if (fFile.ReadAt(offset, buffer, sizeof(buffer)) < B_OK) {
|
if (fBufferedFile->ReadAt(offset, buffer, sizeof(buffer)) < B_OK) {
|
||||||
fprintf(stderr, "could not read from device (offset = %Ld, "
|
fprintf(stderr, "could not read from device (offset = %Ld, "
|
||||||
"size = %ld)!\n", offset, sizeof(buffer));
|
"size = %ld)!\n", offset, sizeof(buffer));
|
||||||
status = B_IO_ERROR;
|
status = B_IO_ERROR;
|
||||||
@@ -547,7 +550,7 @@ Disk::GetNextSpecialInode(char *buffer, off_t *_offset, off_t end,
|
|||||||
bfs_inode *inode = (bfs_inode *)buffer;
|
bfs_inode *inode = (bfs_inode *)buffer;
|
||||||
|
|
||||||
for (; offset < end; offset += BlockSize()) {
|
for (; offset < end; offset += BlockSize()) {
|
||||||
if (fFile.ReadAt(offset, buffer, 1024) < B_OK) {
|
if (fBufferedFile->ReadAt(offset, buffer, 1024) < B_OK) {
|
||||||
fprintf(stderr,"could not read from device (offset = %Ld, size = %d)!\n",offset,1024);
|
fprintf(stderr,"could not read from device (offset = %Ld, size = %d)!\n",offset,1024);
|
||||||
*_offset = offset;
|
*_offset = offset;
|
||||||
return B_IO_ERROR;
|
return B_IO_ERROR;
|
||||||
@@ -660,7 +663,7 @@ Disk::ScanForIndexAndRoot(bfs_inode *indexDir,bfs_inode *rootDir)
|
|||||||
SaveInode(inode,&indices,indexDir,&root,rootDir);
|
SaveInode(inode,&indices,indexDir,&root,rootDir);
|
||||||
|
|
||||||
printf("root node at: 0x%Lx (DiskProbe)\n",logOffset / 512);
|
printf("root node at: 0x%Lx (DiskProbe)\n",logOffset / 512);
|
||||||
//fFile.ReadAt(logOffset + BlockSize(),buffer,1024);
|
//fBufferedFile->ReadAt(logOffset + BlockSize(),buffer,1024);
|
||||||
//if (*(uint32 *)buffer == BPLUSTREE_MAGIC)
|
//if (*(uint32 *)buffer == BPLUSTREE_MAGIC)
|
||||||
//{
|
//{
|
||||||
// puts("\t\tnext block in log contains a bplustree!");
|
// puts("\t\tnext block in log contains a bplustree!");
|
||||||
@@ -700,28 +703,28 @@ Disk::ScanForIndexAndRoot(bfs_inode *indexDir,bfs_inode *rootDir)
|
|||||||
ssize_t
|
ssize_t
|
||||||
Disk::Read(void *buffer, size_t size)
|
Disk::Read(void *buffer, size_t size)
|
||||||
{
|
{
|
||||||
return fFile.Read(buffer, size);
|
return fBufferedFile->Read(buffer, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ssize_t
|
ssize_t
|
||||||
Disk::Write(const void *buffer, size_t size)
|
Disk::Write(const void *buffer, size_t size)
|
||||||
{
|
{
|
||||||
return fFile.Write(buffer, size);
|
return fBufferedFile->Write(buffer, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ssize_t
|
ssize_t
|
||||||
Disk::ReadAt(off_t pos, void *buffer, size_t size)
|
Disk::ReadAt(off_t pos, void *buffer, size_t size)
|
||||||
{
|
{
|
||||||
return fFile.ReadAt(pos + fRawDiskOffset, buffer, size);
|
return fBufferedFile->ReadAt(pos + fRawDiskOffset, buffer, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ssize_t
|
ssize_t
|
||||||
Disk::WriteAt(off_t pos, const void *buffer, size_t size)
|
Disk::WriteAt(off_t pos, const void *buffer, size_t size)
|
||||||
{
|
{
|
||||||
return fFile.WriteAt(pos + fRawDiskOffset, buffer, size);
|
return fBufferedFile->WriteAt(pos + fRawDiskOffset, buffer, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -731,14 +734,14 @@ Disk::Seek(off_t position, uint32 seekMode)
|
|||||||
// ToDo: only correct for seekMode == SEEK_SET, right??
|
// ToDo: only correct for seekMode == SEEK_SET, right??
|
||||||
if (seekMode != SEEK_SET)
|
if (seekMode != SEEK_SET)
|
||||||
puts("OH NO, I AM BROKEN!");
|
puts("OH NO, I AM BROKEN!");
|
||||||
return fFile.Seek(position + fRawDiskOffset, seekMode);
|
return fBufferedFile->Seek(position + fRawDiskOffset, seekMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
off_t
|
off_t
|
||||||
Disk::Position() const
|
Disk::Position() const
|
||||||
{
|
{
|
||||||
return fFile.Position() - fRawDiskOffset;
|
return fBufferedFile->Position() - fRawDiskOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <BufferIO.h>
|
||||||
#include <File.h>
|
#include <File.h>
|
||||||
#include <Path.h>
|
#include <Path.h>
|
||||||
|
|
||||||
@@ -91,7 +92,9 @@ class Disk : public BPositionIO
|
|||||||
|
|
||||||
status_t LoadBootBlock();
|
status_t LoadBootBlock();
|
||||||
|
|
||||||
|
protected:
|
||||||
BFile fFile;
|
BFile fFile;
|
||||||
|
BBufferIO* fBufferedFile;
|
||||||
BPath fPath;
|
BPath fPath;
|
||||||
off_t fRawDiskOffset;
|
off_t fRawDiskOffset;
|
||||||
off_t fSize;
|
off_t fSize;
|
||||||
|
|||||||
@@ -227,6 +227,13 @@ Hashtable::MakeEmpty(int8 keyMode,int8 valueMode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
size_t
|
||||||
|
Hashtable::Size() const
|
||||||
|
{
|
||||||
|
return fCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/** The hash table will be doubled in size, and rebuild.
|
/** The hash table will be doubled in size, and rebuild.
|
||||||
* @return true on success
|
* @return true on success
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ class Hashtable
|
|||||||
void Rewind();
|
void Rewind();
|
||||||
|
|
||||||
void MakeEmpty(int8 keyMode = HASH_EMPTY_NONE,int8 valueMode = HASH_EMPTY_NONE);
|
void MakeEmpty(int8 keyMode = HASH_EMPTY_NONE,int8 valueMode = HASH_EMPTY_NONE);
|
||||||
|
size_t Size() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
class Entry
|
class Entry
|
||||||
|
|||||||
+107
-68
@@ -5,6 +5,8 @@
|
|||||||
//! recovers corrupt BFS disks
|
//! recovers corrupt BFS disks
|
||||||
|
|
||||||
|
|
||||||
|
#include <set>
|
||||||
|
|
||||||
#include "Disk.h"
|
#include "Disk.h"
|
||||||
#include "Inode.h"
|
#include "Inode.h"
|
||||||
#include "Hashtable.h"
|
#include "Hashtable.h"
|
||||||
@@ -30,6 +32,10 @@ bool gRawMode = false;
|
|||||||
bool gVerbose = false;
|
bool gVerbose = false;
|
||||||
|
|
||||||
|
|
||||||
|
// TODO: add a cache for all inodes
|
||||||
|
typedef std::set<block_run> RunSet;
|
||||||
|
|
||||||
|
|
||||||
class InodeHashtable {
|
class InodeHashtable {
|
||||||
public:
|
public:
|
||||||
InodeHashtable(int capacity)
|
InodeHashtable(int capacity)
|
||||||
@@ -113,7 +119,7 @@ class InodeHashtable {
|
|||||||
|
|
||||||
static uint32 BlockRunHash(const block_run *run)
|
static uint32 BlockRunHash(const block_run *run)
|
||||||
{
|
{
|
||||||
return run->allocation_group << 16 | run->start;
|
return (run->allocation_group << 16) | run->start;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool BlockRunCompare(const block_run *runA, const block_run *runB)
|
static bool BlockRunCompare(const block_run *runA, const block_run *runB)
|
||||||
@@ -127,11 +133,14 @@ class InodeHashtable {
|
|||||||
uint32 fPercentUsed;
|
uint32 fPercentUsed;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class InodeGetter {
|
class InodeGetter {
|
||||||
public:
|
public:
|
||||||
InodeGetter(InodeHashtable& hashtable, block_run run)
|
InodeGetter(Disk& disk, block_run run)
|
||||||
{
|
{
|
||||||
fInode = hashtable.Get(run);
|
fInode = Inode::Factory(&disk, run);
|
||||||
|
if (fInode != NULL)
|
||||||
|
fInode->AcquireBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
~InodeGetter()
|
~InodeGetter()
|
||||||
@@ -140,14 +149,22 @@ class InodeGetter {
|
|||||||
fInode->ReleaseBuffer();
|
fInode->ReleaseBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
Inode* Node() { return fInode; }
|
Inode* Node() const
|
||||||
|
{
|
||||||
|
return fInode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Detach()
|
||||||
|
{
|
||||||
|
fInode = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Inode* fInode;
|
Inode* fInode;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
InodeHashtable gHashtable(1000);
|
RunSet gMainInodes;
|
||||||
// contains all inodes found on disk in the general data area
|
// contains all inodes found on disk in the general data area
|
||||||
InodeHashtable gLogged(50);
|
InodeHashtable gLogged(50);
|
||||||
// contains all inodes found in the log area
|
// contains all inodes found in the log area
|
||||||
@@ -157,31 +174,55 @@ InodeHashtable gMissingEmpty(25);
|
|||||||
|
|
||||||
class HashtableInodeSource : public Inode::Source {
|
class HashtableInodeSource : public Inode::Source {
|
||||||
public:
|
public:
|
||||||
|
HashtableInodeSource(Disk& disk)
|
||||||
|
:
|
||||||
|
fDisk(disk)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
virtual Inode *InodeAt(block_run run)
|
virtual Inode *InodeAt(block_run run)
|
||||||
{
|
{
|
||||||
Inode *inode;
|
Inode *inode;
|
||||||
if ((inode = gHashtable.Get(run)) != NULL)
|
|
||||||
return inode;
|
|
||||||
|
|
||||||
if ((inode = gLogged.Get(run)) != NULL)
|
if ((inode = gLogged.Get(run)) != NULL)
|
||||||
return inode;
|
return inode;
|
||||||
|
|
||||||
if ((inode = gMissing.Get(run)) != NULL)
|
if ((inode = gMissing.Get(run)) != NULL)
|
||||||
return inode;
|
return inode;
|
||||||
|
|
||||||
|
if (gMainInodes.find(run) == gMainInodes.end())
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
return Inode::Factory(&fDisk, run);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
Disk& fDisk;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
operator<(const block_run& a, const block_run& b)
|
||||||
|
{
|
||||||
|
return a.allocation_group < b.allocation_group
|
||||||
|
|| (a.allocation_group == b.allocation_group && a.start < b.start);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
collectInodes(Disk &disk, InodeHashtable &hashtable, off_t start, off_t end)
|
collectInodes(Disk& disk, RunSet* set, InodeHashtable* hashTable, off_t start,
|
||||||
|
off_t end)
|
||||||
{
|
{
|
||||||
char buffer[8192];
|
char buffer[8192];
|
||||||
Inode inode(&disk, (bfs_inode *)buffer, false);
|
Inode inode(&disk, (bfs_inode *)buffer, false);
|
||||||
off_t count = 0LL;
|
|
||||||
off_t position = start;
|
|
||||||
|
|
||||||
|
off_t directories = 0LL;
|
||||||
|
off_t directorySize = 0LL;
|
||||||
|
off_t files = 0LL;
|
||||||
|
off_t fileSize = 0LL;
|
||||||
|
off_t symlinks = 0LL;
|
||||||
|
off_t count = 0LL;
|
||||||
|
|
||||||
|
off_t position = start;
|
||||||
bigtime_t lastUpdate = system_time();
|
bigtime_t lastUpdate = system_time();
|
||||||
|
|
||||||
for (off_t offset = start; offset < end; offset += sizeof(buffer)) {
|
for (off_t offset = start; offset < end; offset += sizeof(buffer)) {
|
||||||
@@ -203,32 +244,12 @@ collectInodes(Disk &disk, InodeHashtable &hashtable, off_t start, off_t end)
|
|||||||
if (node != NULL) {
|
if (node != NULL) {
|
||||||
if (gVerbose)
|
if (gVerbose)
|
||||||
printf(" node: %Ld \"%s\"\n", position, node->Name());
|
printf(" node: %Ld \"%s\"\n", position, node->Name());
|
||||||
hashtable.Insert(node);
|
|
||||||
count++;
|
|
||||||
} else if (gVerbose) {
|
|
||||||
printf("\nunrecognized inode:");
|
|
||||||
dump_inode(&inode, inode.InodeBuffer());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
position += disk.BlockSize();
|
|
||||||
}
|
|
||||||
if (system_time() - lastUpdate > 500000) {
|
|
||||||
printf(" block %Ld (%Ld%%), %Ld inodes\33[1A\n", offset, 100 * (offset - start) / (end - start), count);
|
|
||||||
lastUpdate = system_time();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
printf("\n%Ld inodes found.\n", count);
|
|
||||||
|
|
||||||
Inode *node;
|
if (set != NULL)
|
||||||
off_t directories = 0LL;
|
set->insert(node->BlockRun());
|
||||||
off_t directorySize = 0LL;
|
else
|
||||||
off_t files = 0LL;
|
hashTable->Insert(node);
|
||||||
off_t fileSize = 0LL;
|
|
||||||
off_t symlinks = 0LL;
|
|
||||||
count = 0LL;
|
|
||||||
|
|
||||||
hashtable.Rewind();
|
|
||||||
while (hashtable.GetNextEntry(&node) == B_OK) {
|
|
||||||
if (node->IsDirectory()) {
|
if (node->IsDirectory()) {
|
||||||
directories++;
|
directories++;
|
||||||
directorySize += node->Size();
|
directorySize += node->Size();
|
||||||
@@ -239,14 +260,26 @@ collectInodes(Disk &disk, InodeHashtable &hashtable, off_t start, off_t end)
|
|||||||
symlinks++;
|
symlinks++;
|
||||||
}
|
}
|
||||||
count++;
|
count++;
|
||||||
hashtable.Release(node);
|
} else if (gVerbose) {
|
||||||
|
printf("\nunrecognized inode:");
|
||||||
|
dump_inode(&inode, inode.InodeBuffer());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
position += disk.BlockSize();
|
||||||
|
}
|
||||||
|
if (system_time() - lastUpdate > 500000) {
|
||||||
|
printf(" block %Ld (%Ld%%), %Ld inodes\33[1A\n", offset,
|
||||||
|
100 * (offset - start) / (end - start), count);
|
||||||
|
lastUpdate = system_time();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("\n%Ld inodes found.\n", count);
|
||||||
|
|
||||||
printf("\n%20Ld directories found (total of %Ld bytes)\n"
|
printf("\n%20Ld directories found (total of %Ld bytes)\n"
|
||||||
"%20Ld files found (total of %Ld bytes)\n"
|
"%20Ld files found (total of %Ld bytes)\n"
|
||||||
"%20Ld symlinks found\n"
|
"%20Ld symlinks found\n"
|
||||||
"--------------------\n"
|
"--------------------\n"
|
||||||
"%20Ld inodes total found in hashtable.\n",
|
"%20Ld inodes total found.\n",
|
||||||
directories, directorySize, files, fileSize, symlinks, count);
|
directories, directorySize, files, fileSize, symlinks, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -260,7 +293,7 @@ collectLogInodes(Disk &disk)
|
|||||||
|
|
||||||
printf("\nsearching from %Ld to %Ld (log area)\n",offset,end);
|
printf("\nsearching from %Ld to %Ld (log area)\n",offset,end);
|
||||||
|
|
||||||
collectInodes(disk, gLogged, offset, end);
|
collectInodes(disk, NULL, &gLogged, offset, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -270,39 +303,41 @@ collectRealInodes(Disk &disk)
|
|||||||
// first block after bootblock, bitmap, and log
|
// first block after bootblock, bitmap, and log
|
||||||
off_t offset = disk.ToOffset(disk.Log()) + (disk.Log().length
|
off_t offset = disk.ToOffset(disk.Log()) + (disk.Log().length
|
||||||
<< disk.BlockShift());
|
<< disk.BlockShift());
|
||||||
off_t end = /*(17LL << disk.SuperBlock()->ag_shift);
|
off_t end = (off_t)disk.NumBlocks() << disk.BlockShift();
|
||||||
if (end > disk.NumBlocks())
|
|
||||||
end = */disk.NumBlocks();
|
|
||||||
end *= disk.BlockSize();
|
|
||||||
|
|
||||||
printf("\nsearching from %Ld to %Ld (main area)\n", offset, end);
|
printf("\nsearching from %Ld to %Ld (main area)\n", offset, end);
|
||||||
|
|
||||||
collectInodes(disk, gHashtable, offset, end);
|
collectInodes(disk, &gMainInodes, NULL, offset, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Directory *
|
Directory *
|
||||||
getNameIndex(Disk &disk)
|
getNameIndex(Disk &disk)
|
||||||
{
|
{
|
||||||
InodeGetter getter(gHashtable, disk.Indices());
|
InodeGetter getter(disk, disk.Indices());
|
||||||
Directory *indices = dynamic_cast<Directory *>(getter.Node());
|
Directory *indices = dynamic_cast<Directory *>(getter.Node());
|
||||||
|
|
||||||
block_run run;
|
block_run run;
|
||||||
if (indices && indices->FindEntry("name", &run) == B_OK)
|
if (indices != NULL && indices->FindEntry("name", &run) == B_OK) {
|
||||||
return dynamic_cast<Directory *>(gHashtable.Get(run));
|
InodeGetter getter(disk, run);
|
||||||
|
Inode* node = getter.Node();
|
||||||
|
getter.Detach();
|
||||||
|
return dynamic_cast<Directory *>(node);
|
||||||
|
}
|
||||||
|
|
||||||
// search name index
|
// search name index
|
||||||
|
|
||||||
Inode *node;
|
RunSet::iterator iterator = gMainInodes.begin();
|
||||||
|
for (; iterator != gMainInodes.end(); iterator++) {
|
||||||
|
InodeGetter getter(disk, *iterator);
|
||||||
|
Inode* node = getter.Node();
|
||||||
|
|
||||||
gHashtable.Rewind();
|
|
||||||
for (; gHashtable.GetNextEntry(&node) == B_OK; gHashtable.Release(node)) {
|
|
||||||
if (!node->IsIndex() || node->Name() == NULL)
|
if (!node->IsIndex() || node->Name() == NULL)
|
||||||
continue;
|
continue;
|
||||||
if (!strcmp(node->Name(), "name") && node->Mode() & S_STR_INDEX) {
|
if (!strcmp(node->Name(), "name") && node->Mode() & S_STR_INDEX)
|
||||||
return dynamic_cast<Directory *>(node);
|
return dynamic_cast<Directory *>(node);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -317,7 +352,7 @@ checkDirectoryContents(Disk& disk, Directory *dir)
|
|||||||
|
|
||||||
while (dir->GetNextEntry(name, &run) == B_OK) {
|
while (dir->GetNextEntry(name, &run) == B_OK) {
|
||||||
if (run == dir->BlockRun() || run == dir->Parent()
|
if (run == dir->BlockRun() || run == dir->Parent()
|
||||||
|| gHashtable.Contains(&run))
|
|| gMainInodes.find(run) != gMainInodes.end())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Inode *missing = gMissing.Get(run);
|
Inode *missing = gMissing.Get(run);
|
||||||
@@ -385,8 +420,12 @@ checkStructure(Disk &disk)
|
|||||||
Inode *node;
|
Inode *node;
|
||||||
|
|
||||||
off_t count = 0;
|
off_t count = 0;
|
||||||
gHashtable.Rewind();
|
|
||||||
while (gHashtable.GetNextEntry(&node) == B_OK) {
|
RunSet::iterator iterator = gMainInodes.begin();
|
||||||
|
for (; iterator != gMainInodes.end(); iterator++) {
|
||||||
|
InodeGetter getter(disk, *iterator);
|
||||||
|
Inode* node = getter.Node();
|
||||||
|
|
||||||
count++;
|
count++;
|
||||||
if ((count % 50) == 0)
|
if ((count % 50) == 0)
|
||||||
fprintf(stderr, "%Ld inodes processed...\33[1A\n", count);
|
fprintf(stderr, "%Ld inodes processed...\33[1A\n", count);
|
||||||
@@ -399,7 +438,7 @@ checkStructure(Disk &disk)
|
|||||||
// check for the parent directory
|
// check for the parent directory
|
||||||
|
|
||||||
block_run run = node->Parent();
|
block_run run = node->Parent();
|
||||||
InodeGetter parentGetter(gHashtable, run);
|
InodeGetter parentGetter(disk, run);
|
||||||
Inode *parentNode = parentGetter.Node();
|
Inode *parentNode = parentGetter.Node();
|
||||||
|
|
||||||
Directory *dir = dynamic_cast<Directory *>(parentNode);
|
Directory *dir = dynamic_cast<Directory *>(parentNode);
|
||||||
@@ -509,7 +548,7 @@ checkStructure(Disk &disk)
|
|||||||
if (!run.IsZero()) {
|
if (!run.IsZero()) {
|
||||||
//printf("node \"%s\" (%ld, %d, mode = %010lo): has attribute dir!\n",node->Name(),node->BlockRun().allocation_group,node->BlockRun().start,node->Mode());
|
//printf("node \"%s\" (%ld, %d, mode = %010lo): has attribute dir!\n",node->Name(),node->BlockRun().allocation_group,node->BlockRun().start,node->Mode());
|
||||||
|
|
||||||
if (!gHashtable.Contains(&run)) {
|
if (gMainInodes.find(run) == gMainInodes.end()) {
|
||||||
if (gVerbose) {
|
if (gVerbose) {
|
||||||
printf("node \"%s\": attributes are missing (%ld, %d, %d)\n",
|
printf("node \"%s\": attributes are missing (%ld, %d, %d)\n",
|
||||||
node->Name(), run.allocation_group, run.start, run.length);
|
node->Name(), run.allocation_group, run.start, run.length);
|
||||||
@@ -631,33 +670,34 @@ checkStructure(Disk &disk)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
copyInodes(const char *copyTo)
|
copyInodes(Disk& disk, const char* copyTo)
|
||||||
{
|
{
|
||||||
if (!copyTo)
|
if (copyTo == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Inode::Source *source = new HashtableInodeSource;
|
HashtableInodeSource source(disk);
|
||||||
Inode *node;
|
Inode *node;
|
||||||
|
|
||||||
int32 count = 0;
|
int32 count = 0;
|
||||||
|
|
||||||
gHashtable.Rewind();
|
RunSet::iterator iterator = gMainInodes.begin();
|
||||||
while (gHashtable.GetNextEntry(&node) == B_OK) {
|
for (; iterator != gMainInodes.end(); iterator++) {
|
||||||
|
InodeGetter getter(disk, *iterator);
|
||||||
|
Inode* node = getter.Node();
|
||||||
|
|
||||||
if (!node->IsIndex() && !node->IsAttributeDirectory())
|
if (!node->IsIndex() && !node->IsAttributeDirectory())
|
||||||
node->CopyTo(copyTo, source);
|
node->CopyTo(copyTo, &source);
|
||||||
|
|
||||||
if ((++count % 500) == 0)
|
if ((++count % 500) == 0)
|
||||||
fprintf(stderr, "copied %ld files...\n", count);
|
fprintf(stderr, "copied %ld files...\n", count);
|
||||||
|
|
||||||
gHashtable.Release(node);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gMissing.Rewind();
|
gMissing.Rewind();
|
||||||
while (gMissing.GetNextEntry(&node) == B_OK) {
|
while (gMissing.GetNextEntry(&node) == B_OK) {
|
||||||
if (!node->IsIndex() && !node->IsAttributeDirectory())
|
if (!node->IsIndex() && !node->IsAttributeDirectory())
|
||||||
node->CopyTo(copyTo, source);
|
node->CopyTo(copyTo, &source);
|
||||||
|
|
||||||
gHashtable.Release(node);
|
gMissing.Release(node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -802,12 +842,11 @@ main(int argc, char **argv)
|
|||||||
checkStructure(disk);
|
checkStructure(disk);
|
||||||
|
|
||||||
if (argv[1])
|
if (argv[1])
|
||||||
copyInodes(argv[1]);
|
copyInodes(disk, argv[1]);
|
||||||
|
|
||||||
//disk.WriteBootBlock();
|
//disk.WriteBootBlock();
|
||||||
//disk.BlockBitmap()->CompareWithBackup();
|
//disk.BlockBitmap()->CompareWithBackup();
|
||||||
|
|
||||||
gHashtable.MakeEmpty();
|
|
||||||
gMissing.MakeEmpty();
|
gMissing.MakeEmpty();
|
||||||
gLogged.MakeEmpty();
|
gLogged.MakeEmpty();
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,8 @@ ScreenSaverFilter::SetEnabled(bool enabled)
|
|||||||
ScreenSaverWindow::ScreenSaverWindow(BRect frame)
|
ScreenSaverWindow::ScreenSaverWindow(BRect frame)
|
||||||
: BDirectWindow(frame, "ScreenSaver Window",
|
: BDirectWindow(frame, "ScreenSaver Window",
|
||||||
B_NO_BORDER_WINDOW_LOOK, kWindowScreenFeel,
|
B_NO_BORDER_WINDOW_LOOK, kWindowScreenFeel,
|
||||||
B_NOT_RESIZABLE | B_NOT_ZOOMABLE, B_ALL_WORKSPACES),
|
B_NOT_RESIZABLE | B_NOT_MOVABLE | B_NOT_MINIMIZABLE
|
||||||
|
| B_NOT_ZOOMABLE | B_NOT_CLOSABLE, B_ALL_WORKSPACES),
|
||||||
fSaver(NULL)
|
fSaver(NULL)
|
||||||
{
|
{
|
||||||
frame.OffsetTo(0, 0);
|
frame.OffsetTo(0, 0);
|
||||||
|
|||||||
@@ -54,7 +54,8 @@ BBufferGroup::BBufferGroup(size_t size, int32 count, uint32 placement,
|
|||||||
// don't allow all placement parameter values
|
// don't allow all placement parameter values
|
||||||
if (placement != B_ANY_ADDRESS && placement != B_ANY_KERNEL_ADDRESS) {
|
if (placement != B_ANY_ADDRESS && placement != B_ANY_KERNEL_ADDRESS) {
|
||||||
ERROR("BBufferGroup: placement != B_ANY_ADDRESS "
|
ERROR("BBufferGroup: placement != B_ANY_ADDRESS "
|
||||||
"&& placement != B_ANY_KERNEL_ADDRESS (0x%08lx)\n", placement);
|
"&& placement != B_ANY_KERNEL_ADDRESS (0x%#" B_PRIx32 ")\n",
|
||||||
|
placement);
|
||||||
placement = B_ANY_ADDRESS;
|
placement = B_ANY_ADDRESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010, Axel Dörfler, axeld@pinc-software.de.
|
* Copyright 2010-2012, Axel Dörfler, axeld@pinc-software.de.
|
||||||
* Copyright 2002-2003, Marcus Overhagen, <Marcus@Overhagen.de>.
|
* Copyright 2002-2003, Marcus Overhagen, <Marcus@Overhagen.de>.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
@@ -113,7 +113,8 @@ BBufferProducer::GetLatency(bigtime_t* _latency)
|
|||||||
*_latency = latency;
|
*_latency = latency;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf("BBufferProducer::GetLatency: node %ld, name \"%s\" has max latency %Ld\n", fNodeID, fName, *_latency);
|
printf("BBufferProducer::GetLatency: node %" B_PRId32 ", name \"%s\" has "
|
||||||
|
"max latency %" B_PRId64 "\n", fNodeID, fName, *_latency);
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -276,7 +277,7 @@ BBufferProducer::HandleMessage(int32 message, const void* data, size_t size)
|
|||||||
= media_request_info::B_SET_OUTPUT_BUFFERS_FOR;
|
= media_request_info::B_SET_OUTPUT_BUFFERS_FOR;
|
||||||
replycommand.info.change_tag = command->change_tag;
|
replycommand.info.change_tag = command->change_tag;
|
||||||
replycommand.info.status = status;
|
replycommand.info.status = status;
|
||||||
replycommand.info.cookie = (int32)group;
|
replycommand.info.cookie = group;
|
||||||
replycommand.info.user_data = command->user_data;
|
replycommand.info.user_data = command->user_data;
|
||||||
replycommand.info.source = command->source;
|
replycommand.info.source = command->source;
|
||||||
replycommand.info.destination = command->destination;
|
replycommand.info.destination = command->destination;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2009, Axel Dörfler, axeld@pinc-software.de.
|
* Copyright 2009-2012, Axel Dörfler, axeld@pinc-software.de.
|
||||||
* Distributed under the terms of the MIT license.
|
* Distributed under the terms of the MIT license.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -367,7 +367,8 @@ BControllable::StartControlPanel(BMessenger* _messenger)
|
|||||||
ERROR("BControllable::StartControlPanel Error launching application\n");
|
ERROR("BControllable::StartControlPanel Error launching application\n");
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
}
|
}
|
||||||
printf("BControllable::StartControlPanel done with id: %ld\n", team);
|
printf("BControllable::StartControlPanel done with id: %" B_PRId32 "\n",
|
||||||
|
team);
|
||||||
|
|
||||||
if (_messenger)
|
if (_messenger)
|
||||||
*_messenger = BMessenger(NULL, team);
|
*_messenger = BMessenger(NULL, team);
|
||||||
|
|||||||
@@ -134,8 +134,8 @@ SendToPort(port_id sendPort, int32 msgCode, command_data* msg, size_t size)
|
|||||||
status_t status = write_port_etc(sendPort, msgCode, msg, size,
|
status_t status = write_port_etc(sendPort, msgCode, msg, size,
|
||||||
B_RELATIVE_TIMEOUT, TIMEOUT);
|
B_RELATIVE_TIMEOUT, TIMEOUT);
|
||||||
if (status != B_OK) {
|
if (status != B_OK) {
|
||||||
ERROR("SendToPort: write_port failed, msgcode 0x%lx, port %ld: %s\n",
|
ERROR("SendToPort: write_port failed, msgcode 0x%" B_PRIx32 ", port %"
|
||||||
msgCode, sendPort, strerror(status));
|
B_PRId32 ": %s\n", msgCode, sendPort, strerror(status));
|
||||||
if (status == B_BAD_PORT_ID && sendPort == sMediaServerPort) {
|
if (status == B_BAD_PORT_ID && sendPort == sMediaServerPort) {
|
||||||
find_media_server_port();
|
find_media_server_port();
|
||||||
sendPort = sMediaServerPort;
|
sendPort = sMediaServerPort;
|
||||||
@@ -149,8 +149,9 @@ SendToPort(port_id sendPort, int32 msgCode, command_data* msg, size_t size)
|
|||||||
status = write_port_etc(sendPort, msgCode, msg, size,
|
status = write_port_etc(sendPort, msgCode, msg, size,
|
||||||
B_RELATIVE_TIMEOUT, TIMEOUT);
|
B_RELATIVE_TIMEOUT, TIMEOUT);
|
||||||
if (status != B_OK) {
|
if (status != B_OK) {
|
||||||
ERROR("SendToPort: retrying write_port failed, msgCode 0x%lx, "
|
ERROR("SendToPort: retrying write_port failed, msgCode 0x%" B_PRIx32
|
||||||
"port %ld: %s\n", msgCode, sendPort, strerror(status));
|
", port %" B_PRId32 ": %s\n", msgCode, sendPort,
|
||||||
|
strerror(status));
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -165,8 +166,8 @@ QueryPort(port_id requestPort, int32 msgCode, request_data* request,
|
|||||||
status_t status = write_port_etc(requestPort, msgCode, request, requestSize,
|
status_t status = write_port_etc(requestPort, msgCode, request, requestSize,
|
||||||
B_RELATIVE_TIMEOUT, TIMEOUT);
|
B_RELATIVE_TIMEOUT, TIMEOUT);
|
||||||
if (status != B_OK) {
|
if (status != B_OK) {
|
||||||
ERROR("QueryPort: write_port failed, msgcode 0x%lx, port %ld: %s\n",
|
ERROR("QueryPort: write_port failed, msgcode 0x%" B_PRIx32 ", port %"
|
||||||
msgCode, requestPort, strerror(status));
|
B_PRId32 ": %s\n", msgCode, requestPort, strerror(status));
|
||||||
|
|
||||||
if (status == B_BAD_PORT_ID && requestPort == sMediaServerPort) {
|
if (status == B_BAD_PORT_ID && requestPort == sMediaServerPort) {
|
||||||
find_media_server_port();
|
find_media_server_port();
|
||||||
@@ -181,8 +182,9 @@ QueryPort(port_id requestPort, int32 msgCode, request_data* request,
|
|||||||
status = write_port_etc(requestPort, msgCode, request, requestSize,
|
status = write_port_etc(requestPort, msgCode, request, requestSize,
|
||||||
B_RELATIVE_TIMEOUT, TIMEOUT);
|
B_RELATIVE_TIMEOUT, TIMEOUT);
|
||||||
if (status != B_OK) {
|
if (status != B_OK) {
|
||||||
ERROR("QueryPort: retrying write_port failed, msgcode 0x%lx, port "
|
ERROR("QueryPort: retrying write_port failed, msgcode 0x%" B_PRIx32
|
||||||
"%ld: %s\n", msgCode, requestPort, strerror(status));
|
", port %" B_PRId32 ": %s\n", msgCode, requestPort,
|
||||||
|
strerror(status));
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -191,8 +193,8 @@ QueryPort(port_id requestPort, int32 msgCode, request_data* request,
|
|||||||
status = read_port_etc(request->reply_port, &code, reply, replySize,
|
status = read_port_etc(request->reply_port, &code, reply, replySize,
|
||||||
B_RELATIVE_TIMEOUT, TIMEOUT);
|
B_RELATIVE_TIMEOUT, TIMEOUT);
|
||||||
if (status < B_OK) {
|
if (status < B_OK) {
|
||||||
ERROR("QueryPort: read_port failed, msgcode 0x%lx, port %ld: %s\n",
|
ERROR("QueryPort: read_port failed, msgcode 0x%" B_PRIx32 ", port %"
|
||||||
msgCode, request->reply_port, strerror(status));
|
B_PRId32 ": %s\n", msgCode, request->reply_port, strerror(status));
|
||||||
}
|
}
|
||||||
|
|
||||||
return status < B_OK ? status : reply->result;
|
return status < B_OK ? status : reply->result;
|
||||||
|
|||||||
@@ -85,8 +85,8 @@ DormantNodeManager::~DormantNodeManager()
|
|||||||
for (; iterator != fAddOnMap.end(); iterator++) {
|
for (; iterator != fAddOnMap.end(); iterator++) {
|
||||||
loaded_add_on_info& info = iterator->second;
|
loaded_add_on_info& info = iterator->second;
|
||||||
|
|
||||||
ERROR("Forcing unload of add-on id %ld with usecount %ld\n",
|
ERROR("Forcing unload of add-on id %" B_PRId32 " with usecount %"
|
||||||
info.add_on->AddonID(), info.use_count);
|
B_PRId32 "\n", info.add_on->AddonID(), info.use_count);
|
||||||
_UnloadAddOn(info.add_on, info.image);
|
_UnloadAddOn(info.add_on, info.image);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -95,7 +95,7 @@ DormantNodeManager::~DormantNodeManager()
|
|||||||
BMediaAddOn*
|
BMediaAddOn*
|
||||||
DormantNodeManager::GetAddOn(media_addon_id id)
|
DormantNodeManager::GetAddOn(media_addon_id id)
|
||||||
{
|
{
|
||||||
TRACE("DormantNodeManager::GetAddon, id %ld\n", id);
|
TRACE("DormantNodeManager::GetAddon, id %" B_PRId32 "\n", id);
|
||||||
|
|
||||||
// first try to use a already loaded add-on
|
// first try to use a already loaded add-on
|
||||||
BMediaAddOn* addOn = _LookupAddOn(id);
|
BMediaAddOn* addOn = _LookupAddOn(id);
|
||||||
@@ -107,8 +107,8 @@ DormantNodeManager::GetAddOn(media_addon_id id)
|
|||||||
// ok, it's not loaded, try to get the path
|
// ok, it's not loaded, try to get the path
|
||||||
BPath path;
|
BPath path;
|
||||||
if (FindAddOnPath(&path, id) != B_OK) {
|
if (FindAddOnPath(&path, id) != B_OK) {
|
||||||
ERROR("DormantNodeManager::GetAddon: can't find path for add-on "
|
ERROR("DormantNodeManager::GetAddon: can't find path for add-on %"
|
||||||
"%ld\n", id);
|
B_PRId32 "\n", id);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,8 +116,8 @@ DormantNodeManager::GetAddOn(media_addon_id id)
|
|||||||
BMediaAddOn* newAddOn;
|
BMediaAddOn* newAddOn;
|
||||||
image_id image;
|
image_id image;
|
||||||
if (_LoadAddOn(path.Path(), id, &newAddOn, &image) != B_OK) {
|
if (_LoadAddOn(path.Path(), id, &newAddOn, &image) != B_OK) {
|
||||||
ERROR("DormantNodeManager::GetAddon: can't load add-on %ld from path "
|
ERROR("DormantNodeManager::GetAddon: can't load add-on %" B_PRId32
|
||||||
"%s\n",id, path.Path());
|
" from path %s\n",id, path.Path());
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,13 +154,14 @@ DormantNodeManager::GetAddOn(media_addon_id id)
|
|||||||
void
|
void
|
||||||
DormantNodeManager::PutAddOn(media_addon_id id)
|
DormantNodeManager::PutAddOn(media_addon_id id)
|
||||||
{
|
{
|
||||||
TRACE("DormantNodeManager::PutAddon, id %ld\n", id);
|
TRACE("DormantNodeManager::PutAddon, id %" B_PRId32 "\n", id);
|
||||||
|
|
||||||
BAutolock locker(fLock);
|
BAutolock locker(fLock);
|
||||||
|
|
||||||
AddOnMap::iterator found = fAddOnMap.find(id);
|
AddOnMap::iterator found = fAddOnMap.find(id);
|
||||||
if (found == fAddOnMap.end()) {
|
if (found == fAddOnMap.end()) {
|
||||||
ERROR("DormantNodeManager::PutAddon: failed to find add-on %ld\n", id);
|
ERROR("DormantNodeManager::PutAddon: failed to find add-on %" B_PRId32
|
||||||
|
"\n", id);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -222,7 +223,7 @@ DormantNodeManager::RegisterAddOn(const char* path)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
TRACE("DormantNodeManager::RegisterAddon finished with id %ld\n",
|
TRACE("DormantNodeManager::RegisterAddon finished with id %" B_PRId32 "\n",
|
||||||
reply.add_on_id);
|
reply.add_on_id);
|
||||||
|
|
||||||
return reply.add_on_id;
|
return reply.add_on_id;
|
||||||
@@ -233,7 +234,7 @@ DormantNodeManager::RegisterAddOn(const char* path)
|
|||||||
void
|
void
|
||||||
DormantNodeManager::UnregisterAddOn(media_addon_id id)
|
DormantNodeManager::UnregisterAddOn(media_addon_id id)
|
||||||
{
|
{
|
||||||
TRACE("DormantNodeManager::UnregisterAddon id %ld\n",id);
|
TRACE("DormantNodeManager::UnregisterAddon id %" B_PRId32 "\n", id);
|
||||||
ASSERT(id > 0);
|
ASSERT(id > 0);
|
||||||
|
|
||||||
port_id port = find_port(MEDIA_SERVER_PORT_NAME);
|
port_id port = find_port(MEDIA_SERVER_PORT_NAME);
|
||||||
|
|||||||
@@ -636,7 +636,8 @@ multistream_format_specialize(media_multistream_format* format,
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
ERROR("media_format::SpecializeTo can't specialize "
|
ERROR("media_format::SpecializeTo can't specialize "
|
||||||
"media_multistream_format of format %ld\n", format->format);
|
"media_multistream_format of format %" B_PRId32 "\n",
|
||||||
|
format->format);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1078,7 +1079,8 @@ string_for_format(const media_format& f, char* buf, size_t size)
|
|||||||
switch (f.type) {
|
switch (f.type) {
|
||||||
case B_MEDIA_RAW_AUDIO:
|
case B_MEDIA_RAW_AUDIO:
|
||||||
snprintf(buf, size,
|
snprintf(buf, size,
|
||||||
"raw_audio;%g;%ld;0x%lx;%ld;0x%lx;0x%08lx;%d;0x%04x",
|
"raw_audio;%g;%" B_PRIu32 ";0x%" B_PRIx32 ";%" B_PRIu32 ";0x%"
|
||||||
|
B_PRIxSIZE ";0x%#" B_PRIx32 ";%d;0x%04x",
|
||||||
f.u.raw_audio.frame_rate,
|
f.u.raw_audio.frame_rate,
|
||||||
f.u.raw_audio.channel_count,
|
f.u.raw_audio.channel_count,
|
||||||
f.u.raw_audio.format,
|
f.u.raw_audio.format,
|
||||||
@@ -1093,9 +1095,8 @@ string_for_format(const media_format& f, char* buf, size_t size)
|
|||||||
videoOrientation = "TopLR";
|
videoOrientation = "TopLR";
|
||||||
else if (f.u.raw_video.orientation == B_VIDEO_BOTTOM_LEFT_RIGHT)
|
else if (f.u.raw_video.orientation == B_VIDEO_BOTTOM_LEFT_RIGHT)
|
||||||
videoOrientation = "BotLR";
|
videoOrientation = "BotLR";
|
||||||
// snprintf(buf, size, "raw_video;%g;%ld;%ld;%ld;%s;%d;%d;%d;%d;%d;%d;"
|
snprintf(buf, size, "raw_video;%g;0x%x;%" B_PRIu32 ";%" B_PRIu32 ";%"
|
||||||
// "%d;%d",
|
B_PRIu32 ";%" B_PRIu32 ";%s;%d;%d",
|
||||||
snprintf(buf, size, "raw_video;%g;0x%x;%ld;%ld;%ld;%ld;%s;%d;%d",
|
|
||||||
f.u.raw_video.field_rate,
|
f.u.raw_video.field_rate,
|
||||||
f.u.raw_video.display.format,
|
f.u.raw_video.display.format,
|
||||||
f.u.raw_video.interlace,
|
f.u.raw_video.interlace,
|
||||||
@@ -1109,11 +1110,11 @@ string_for_format(const media_format& f, char* buf, size_t size)
|
|||||||
case B_MEDIA_ENCODED_AUDIO:
|
case B_MEDIA_ENCODED_AUDIO:
|
||||||
snprintf(encoding, 10, "%d", f.u.encoded_audio.encoding);
|
snprintf(encoding, 10, "%d", f.u.encoded_audio.encoding);
|
||||||
snprintf(buf, size,
|
snprintf(buf, size,
|
||||||
"caudio;%s;%g;%ld;(%g;%ld;0x%lx;%ld;0x%lx;0x%08lx;%d;0x%04x)",
|
"caudio;%s;%g;%ld;(%g;%" B_PRIu32 ";0x%" B_PRIx32 ";%" B_PRIu32
|
||||||
encoding, // f.u.encoded_audio.encoding,
|
";0x%" B_PRIxSIZE ";0x%08" B_PRIx32 ";%d;0x%04x)",
|
||||||
|
encoding,
|
||||||
f.u.encoded_audio.bit_rate,
|
f.u.encoded_audio.bit_rate,
|
||||||
f.u.encoded_audio.frame_size,
|
f.u.encoded_audio.frame_size,
|
||||||
// (
|
|
||||||
f.u.encoded_audio.output.frame_rate,
|
f.u.encoded_audio.output.frame_rate,
|
||||||
f.u.encoded_audio.output.channel_count,
|
f.u.encoded_audio.output.channel_count,
|
||||||
f.u.encoded_audio.output.format,
|
f.u.encoded_audio.output.format,
|
||||||
@@ -1122,7 +1123,6 @@ string_for_format(const media_format& f, char* buf, size_t size)
|
|||||||
f.u.encoded_audio.multi_info.channel_mask,
|
f.u.encoded_audio.multi_info.channel_mask,
|
||||||
f.u.encoded_audio.multi_info.valid_bits,
|
f.u.encoded_audio.multi_info.valid_bits,
|
||||||
f.u.encoded_audio.multi_info.matrix_mask);
|
f.u.encoded_audio.multi_info.matrix_mask);
|
||||||
// )
|
|
||||||
return true;
|
return true;
|
||||||
case B_MEDIA_ENCODED_VIDEO:
|
case B_MEDIA_ENCODED_VIDEO:
|
||||||
snprintf(encoding, 10, "%d", f.u.encoded_video.encoding);
|
snprintf(encoding, 10, "%d", f.u.encoded_video.encoding);
|
||||||
@@ -1131,12 +1131,12 @@ string_for_format(const media_format& f, char* buf, size_t size)
|
|||||||
else if (f.u.encoded_video.output.orientation == B_VIDEO_BOTTOM_LEFT_RIGHT)
|
else if (f.u.encoded_video.output.orientation == B_VIDEO_BOTTOM_LEFT_RIGHT)
|
||||||
videoOrientation = "BotLR";
|
videoOrientation = "BotLR";
|
||||||
snprintf(buf, size,
|
snprintf(buf, size,
|
||||||
"cvideo;%s;%g;%g;%ld;(%g;0x%x;%ld;%ld;%ld;%ld;%s;%d;%d)",
|
"cvideo;%s;%g;%g;%" B_PRIuSIZE ";(%g;0x%x;%" B_PRIu32 ";%" B_PRIu32
|
||||||
|
";%" B_PRIu32 ";%" B_PRIu32 ";%s;%d;%d)",
|
||||||
encoding,
|
encoding,
|
||||||
f.u.encoded_video.avg_bit_rate,
|
f.u.encoded_video.avg_bit_rate,
|
||||||
f.u.encoded_video.max_bit_rate,
|
f.u.encoded_video.max_bit_rate,
|
||||||
f.u.encoded_video.frame_size,
|
f.u.encoded_video.frame_size,
|
||||||
// (
|
|
||||||
f.u.encoded_video.output.field_rate,
|
f.u.encoded_video.output.field_rate,
|
||||||
f.u.encoded_video.output.display.format,
|
f.u.encoded_video.output.display.format,
|
||||||
f.u.encoded_video.output.interlace,
|
f.u.encoded_video.output.interlace,
|
||||||
@@ -1146,7 +1146,6 @@ string_for_format(const media_format& f, char* buf, size_t size)
|
|||||||
videoOrientation,
|
videoOrientation,
|
||||||
f.u.encoded_video.output.pixel_width_aspect,
|
f.u.encoded_video.output.pixel_width_aspect,
|
||||||
f.u.encoded_video.output.pixel_height_aspect);
|
f.u.encoded_video.output.pixel_height_aspect);
|
||||||
// )
|
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
snprintf(buf, size, "%d-", f.type);
|
snprintf(buf, size, "%d-", f.type);
|
||||||
|
|||||||
@@ -176,7 +176,8 @@ BMediaEventLooper::SetRunMode(run_mode mode)
|
|||||||
if (fControlThread > 0) {
|
if (fControlThread > 0) {
|
||||||
set_thread_priority(fControlThread, fCurrentPriority);
|
set_thread_priority(fControlThread, fCurrentPriority);
|
||||||
fSchedulingLatency = estimate_max_scheduling_latency(fControlThread);
|
fSchedulingLatency = estimate_max_scheduling_latency(fControlThread);
|
||||||
printf("BMediaEventLooper: SchedulingLatency is %Ld\n", fSchedulingLatency);
|
printf("BMediaEventLooper: SchedulingLatency is %" B_PRId64 "\n",
|
||||||
|
fSchedulingLatency);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -359,7 +360,8 @@ BMediaEventLooper::SetPriority(int32 priority)
|
|||||||
if (fControlThread > 0) {
|
if (fControlThread > 0) {
|
||||||
set_thread_priority(fControlThread, fCurrentPriority);
|
set_thread_priority(fControlThread, fCurrentPriority);
|
||||||
fSchedulingLatency = estimate_max_scheduling_latency(fControlThread);
|
fSchedulingLatency = estimate_max_scheduling_latency(fControlThread);
|
||||||
printf("BMediaEventLooper: SchedulingLatency is %Ld\n", fSchedulingLatency);
|
printf("BMediaEventLooper: SchedulingLatency is %" B_PRId64 "\n",
|
||||||
|
fSchedulingLatency);
|
||||||
}
|
}
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
@@ -427,7 +429,8 @@ BMediaEventLooper::Run()
|
|||||||
|
|
||||||
// get latency information
|
// get latency information
|
||||||
fSchedulingLatency = estimate_max_scheduling_latency(fControlThread);
|
fSchedulingLatency = estimate_max_scheduling_latency(fControlThread);
|
||||||
printf("BMediaEventLooper: SchedulingLatency is %Ld\n", fSchedulingLatency);
|
printf("BMediaEventLooper: SchedulingLatency is %" B_PRId64 "\n",
|
||||||
|
fSchedulingLatency);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2004-2007, Marcus Overhagen. All rights reserved.
|
* Copyright 2004-2007, Marcus Overhagen. All rights reserved.
|
||||||
* Copyright 2008, Maurice Kalinowski. All rights reserved.
|
* Copyright 2008, Maurice Kalinowski. All rights reserved.
|
||||||
* Copyright 2009, Axel Dörfler, axeld@pinc-software.de.
|
* Copyright 2009-2012, Axel Dörfler, axeld@pinc-software.de.
|
||||||
*
|
*
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
@@ -103,8 +103,8 @@ MediaExtractor::MediaExtractor(BDataIO* source, int32 flags)
|
|||||||
fStreamInfo[i].cookie = 0;
|
fStreamInfo[i].cookie = 0;
|
||||||
fStreamInfo[i].hasCookie = false;
|
fStreamInfo[i].hasCookie = false;
|
||||||
fStreamInfo[i].status = B_ERROR;
|
fStreamInfo[i].status = B_ERROR;
|
||||||
ERROR("MediaExtractor::MediaExtractor: AllocateCookie for stream "
|
ERROR("MediaExtractor::MediaExtractor: AllocateCookie for stream %"
|
||||||
"%ld failed\n", i);
|
B_PRId32 " failed\n", i);
|
||||||
} else
|
} else
|
||||||
fStreamInfo[i].hasCookie = true;
|
fStreamInfo[i].hasCookie = true;
|
||||||
}
|
}
|
||||||
@@ -122,7 +122,7 @@ MediaExtractor::MediaExtractor(BDataIO* source, int32 flags)
|
|||||||
!= B_OK) {
|
!= B_OK) {
|
||||||
fStreamInfo[i].status = B_ERROR;
|
fStreamInfo[i].status = B_ERROR;
|
||||||
ERROR("MediaExtractor::MediaExtractor: GetStreamInfo for "
|
ERROR("MediaExtractor::MediaExtractor: GetStreamInfo for "
|
||||||
"stream %ld failed\n", i);
|
"stream %" B_PRId32 " failed\n", i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -330,7 +330,7 @@ MediaExtractor::CreateDecoder(int32 stream, Decoder** _decoder,
|
|||||||
status_t status = fStreamInfo[stream].status;
|
status_t status = fStreamInfo[stream].status;
|
||||||
if (status != B_OK) {
|
if (status != B_OK) {
|
||||||
ERROR("MediaExtractor::CreateDecoder can't create decoder for "
|
ERROR("MediaExtractor::CreateDecoder can't create decoder for "
|
||||||
"stream %ld: %s\n", stream, strerror(status));
|
"stream %" B_PRId32 ": %s\n", stream, strerror(status));
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -346,8 +346,8 @@ MediaExtractor::CreateDecoder(int32 stream, Decoder** _decoder,
|
|||||||
sizeof(formatString));
|
sizeof(formatString));
|
||||||
|
|
||||||
ERROR("MediaExtractor::CreateDecoder gPluginManager.CreateDecoder "
|
ERROR("MediaExtractor::CreateDecoder gPluginManager.CreateDecoder "
|
||||||
"failed for stream %ld, format: %s: %s\n", stream, formatString,
|
"failed for stream %" B_PRId32 ", format: %s: %s\n", stream,
|
||||||
strerror(status));
|
formatString, strerror(status));
|
||||||
#endif
|
#endif
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
@@ -357,7 +357,7 @@ MediaExtractor::CreateDecoder(int32 stream, Decoder** _decoder,
|
|||||||
if (chunkProvider == NULL) {
|
if (chunkProvider == NULL) {
|
||||||
gPluginManager.DestroyDecoder(decoder);
|
gPluginManager.DestroyDecoder(decoder);
|
||||||
ERROR("MediaExtractor::CreateDecoder can't create chunk provider "
|
ERROR("MediaExtractor::CreateDecoder can't create chunk provider "
|
||||||
"for stream %ld\n", stream);
|
"for stream %" B_PRId32 "\n", stream);
|
||||||
return B_NO_MEMORY;
|
return B_NO_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -367,16 +367,16 @@ MediaExtractor::CreateDecoder(int32 stream, Decoder** _decoder,
|
|||||||
fStreamInfo[stream].infoBuffer, fStreamInfo[stream].infoBufferSize);
|
fStreamInfo[stream].infoBuffer, fStreamInfo[stream].infoBufferSize);
|
||||||
if (status != B_OK) {
|
if (status != B_OK) {
|
||||||
gPluginManager.DestroyDecoder(decoder);
|
gPluginManager.DestroyDecoder(decoder);
|
||||||
ERROR("MediaExtractor::CreateDecoder Setup failed for stream %ld: %s\n",
|
ERROR("MediaExtractor::CreateDecoder Setup failed for stream %" B_PRId32
|
||||||
stream, strerror(status));
|
": %s\n", stream, strerror(status));
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = gPluginManager.GetDecoderInfo(decoder, codecInfo);
|
status = gPluginManager.GetDecoderInfo(decoder, codecInfo);
|
||||||
if (status != B_OK) {
|
if (status != B_OK) {
|
||||||
gPluginManager.DestroyDecoder(decoder);
|
gPluginManager.DestroyDecoder(decoder);
|
||||||
ERROR("MediaExtractor::CreateDecoder GetCodecInfo failed for stream "
|
ERROR("MediaExtractor::CreateDecoder GetCodecInfo failed for stream %"
|
||||||
"%ld: %s\n", stream, strerror(status));
|
B_PRId32 ": %s\n", stream, strerror(status));
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+214
-178
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2008 Maurice Kalinowski, haiku@kaldience.com
|
* Copyright 2008 Maurice Kalinowski, haiku@kaldience.com
|
||||||
* Copyright 2009, Axel Dörfler, axeld@pinc-software.de.
|
* Copyright 2009-2012, Axel Dörfler, axeld@pinc-software.de.
|
||||||
*
|
*
|
||||||
* All rights reserved. Distributed under the terms of the MIT License.
|
* All rights reserved. Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
@@ -132,8 +132,8 @@ BMediaRosterEx::SaveNodeConfiguration(BMediaNode* node)
|
|||||||
// NOTE: This node could have been created by an application,
|
// NOTE: This node could have been created by an application,
|
||||||
// it does not mean there is an error.
|
// it does not mean there is an error.
|
||||||
// TODO: this check incorrectly triggers on BeOS R5 BT848 node
|
// TODO: this check incorrectly triggers on BeOS R5 BT848 node
|
||||||
TRACE("BMediaRosterEx::SaveNodeConfiguration node %ld not instantiated "
|
TRACE("BMediaRosterEx::SaveNodeConfiguration node %" B_PRId32 " not "
|
||||||
"from BMediaAddOn!\n", node->ID());
|
"instantiated from BMediaAddOn!\n", node->ID());
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,7 +141,8 @@ BMediaRosterEx::SaveNodeConfiguration(BMediaNode* node)
|
|||||||
|
|
||||||
// TODO: fix this
|
// TODO: fix this
|
||||||
printf("### BMediaRosterEx::SaveNodeConfiguration should save addon-id "
|
printf("### BMediaRosterEx::SaveNodeConfiguration should save addon-id "
|
||||||
"%ld, flavor-id %ld config NOW!\n", addonID, flavorID);
|
"%" B_PRId32 ", flavor-id %" B_PRId32 " config NOW!\n", addonID,
|
||||||
|
flavorID);
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,7 +154,8 @@ BMediaRosterEx::LoadNodeConfiguration(media_addon_id addonID, int32 flavorID,
|
|||||||
// TODO: fix this
|
// TODO: fix this
|
||||||
_msg->MakeEmpty(); // to be fully R5 compliant
|
_msg->MakeEmpty(); // to be fully R5 compliant
|
||||||
printf("### BMediaRosterEx::LoadNodeConfiguration should load addon-id "
|
printf("### BMediaRosterEx::LoadNodeConfiguration should load addon-id "
|
||||||
"%ld, flavor-id %ld config NOW!\n", addonID, flavorID);
|
"%" B_PRId32 ", flavor-id %" B_PRId32 " config NOW!\n", addonID,
|
||||||
|
flavorID);
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -199,7 +201,8 @@ BMediaRosterEx::ReleaseNodeAll(const media_node& node)
|
|||||||
|
|
||||||
if (node.kind & NODE_KIND_NO_REFCOUNTING) {
|
if (node.kind & NODE_KIND_NO_REFCOUNTING) {
|
||||||
printf("BMediaRoster::ReleaseNodeAll, trying to release reference "
|
printf("BMediaRoster::ReleaseNodeAll, trying to release reference "
|
||||||
"counting disabled timesource, node %ld, port %ld, team %ld\n",
|
"counting disabled timesource, node %" B_PRId32 ", port %" B_PRId32
|
||||||
|
", team %" B_PRId32 "\n",
|
||||||
node.node, node.port, BPrivate::current_team());
|
node.node, node.port, BPrivate::current_team());
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
@@ -211,14 +214,16 @@ BMediaRosterEx::ReleaseNodeAll(const media_node& node)
|
|||||||
request.node = node;
|
request.node = node;
|
||||||
request.team = BPrivate::current_team();
|
request.team = BPrivate::current_team();
|
||||||
|
|
||||||
TRACE("BMediaRoster::ReleaseNodeAll, node %ld, port %ld, team %ld\n",
|
TRACE("BMediaRoster::ReleaseNodeAll, node %" B_PRId32 ", port %" B_PRId32
|
||||||
|
", team %" B_PRId32 "\n",
|
||||||
node.node, node.port, BPrivate::current_team());
|
node.node, node.port, BPrivate::current_team());
|
||||||
|
|
||||||
rv = QueryServer(SERVER_RELEASE_NODE_ALL, &request, sizeof(request), &reply,
|
rv = QueryServer(SERVER_RELEASE_NODE_ALL, &request, sizeof(request), &reply,
|
||||||
sizeof(reply));
|
sizeof(reply));
|
||||||
if (rv != B_OK) {
|
if (rv != B_OK) {
|
||||||
ERROR("BMediaRoster::ReleaseNodeAll FAILED, node %ld, port %ld, team "
|
ERROR("BMediaRoster::ReleaseNodeAll FAILED, node %" B_PRId32 ", port %"
|
||||||
"%ld!\n", node.node, node.port, BPrivate::current_team());
|
B_PRId32 ", team %" B_PRId32 "!\n", node.node, node.port,
|
||||||
|
BPrivate::current_team());
|
||||||
}
|
}
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
@@ -294,11 +299,11 @@ BMediaRosterEx::GetAllOutputs(const media_node& node, List<media_output>* list)
|
|||||||
status_t rv;
|
status_t rv;
|
||||||
status_t result;
|
status_t result;
|
||||||
|
|
||||||
PRINT(4, "BMediaRosterEx::GetAllOutputs() node %ld, port %ld\n", node.node,
|
PRINT(4, "BMediaRosterEx::GetAllOutputs() node %" B_PRId32 ", port %"
|
||||||
node.port);
|
B_PRId32 "\n", node.node, node.port);
|
||||||
|
|
||||||
if (!(node.kind & B_BUFFER_PRODUCER)) {
|
if (!(node.kind & B_BUFFER_PRODUCER)) {
|
||||||
ERROR("BMediaRosterEx::GetAllOutputs: node %ld is not a "
|
ERROR("BMediaRosterEx::GetAllOutputs: node %" B_PRId32 " is not a "
|
||||||
"B_BUFFER_PRODUCER\n", node.node);
|
"B_BUFFER_PRODUCER\n", node.node);
|
||||||
return B_MEDIA_BAD_NODE;
|
return B_MEDIA_BAD_NODE;
|
||||||
}
|
}
|
||||||
@@ -320,7 +325,7 @@ BMediaRosterEx::GetAllOutputs(const media_node& node, List<media_output>* list)
|
|||||||
result = B_ERROR;
|
result = B_ERROR;
|
||||||
}
|
}
|
||||||
#if DEBUG >= 3
|
#if DEBUG >= 3
|
||||||
PRINT(3," next cookie %ld, ", cookie);
|
PRINT(3," next cookie %" B_PRId32 ", ", cookie);
|
||||||
PRINT_OUTPUT("output ", reply.output);
|
PRINT_OUTPUT("output ", reply.output);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -340,7 +345,8 @@ BMediaRosterEx::GetAllOutputs(BBufferProducer* node, List<media_output>* list)
|
|||||||
int32 cookie;
|
int32 cookie;
|
||||||
status_t result;
|
status_t result;
|
||||||
|
|
||||||
PRINT(4, "BMediaRosterEx::GetAllOutputs() (by pointer) node %ld, port %ld\n", node->ID(), node->ControlPort());
|
PRINT(4, "BMediaRosterEx::GetAllOutputs() (by pointer) node %" B_PRId32
|
||||||
|
", port %" B_PRId32 "\n", node->ID(), node->ControlPort());
|
||||||
|
|
||||||
result = B_OK;
|
result = B_OK;
|
||||||
cookie = 0;
|
cookie = 0;
|
||||||
@@ -354,7 +360,7 @@ BMediaRosterEx::GetAllOutputs(BBufferProducer* node, List<media_output>* list)
|
|||||||
result = B_ERROR;
|
result = B_ERROR;
|
||||||
}
|
}
|
||||||
#if DEBUG >= 3
|
#if DEBUG >= 3
|
||||||
PRINT(3," next cookie %ld, ", cookie);
|
PRINT(3," next cookie %" B_PRId32 ", ", cookie);
|
||||||
PRINT_OUTPUT("output ", output);
|
PRINT_OUTPUT("output ", output);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -370,11 +376,11 @@ BMediaRosterEx::GetAllInputs(const media_node& node, List<media_input>* list)
|
|||||||
status_t rv;
|
status_t rv;
|
||||||
status_t result;
|
status_t result;
|
||||||
|
|
||||||
PRINT(4, "BMediaRosterEx::GetAllInputs() node %ld, port %ld\n", node.node,
|
PRINT(4, "BMediaRosterEx::GetAllInputs() node %" B_PRId32 ", port %"
|
||||||
node.port);
|
B_PRId32 "\n", node.node, node.port);
|
||||||
|
|
||||||
if (!(node.kind & B_BUFFER_CONSUMER)) {
|
if (!(node.kind & B_BUFFER_CONSUMER)) {
|
||||||
ERROR("BMediaRosterEx::GetAllInputs: node %ld is not a "
|
ERROR("BMediaRosterEx::GetAllInputs: node %" B_PRId32 " is not a "
|
||||||
"B_BUFFER_CONSUMER\n", node.node);
|
"B_BUFFER_CONSUMER\n", node.node);
|
||||||
return B_MEDIA_BAD_NODE;
|
return B_MEDIA_BAD_NODE;
|
||||||
}
|
}
|
||||||
@@ -396,7 +402,7 @@ BMediaRosterEx::GetAllInputs(const media_node& node, List<media_input>* list)
|
|||||||
result = B_ERROR;
|
result = B_ERROR;
|
||||||
}
|
}
|
||||||
#if DEBUG >= 3
|
#if DEBUG >= 3
|
||||||
PRINT(3," next cookie %ld, ", cookie);
|
PRINT(3," next cookie %" B_PRId32 ", ", cookie);
|
||||||
PRINT_OUTPUT("input ", reply.input);
|
PRINT_OUTPUT("input ", reply.input);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -416,7 +422,8 @@ BMediaRosterEx::GetAllInputs(BBufferConsumer* node, List<media_input>* list)
|
|||||||
int32 cookie;
|
int32 cookie;
|
||||||
status_t result;
|
status_t result;
|
||||||
|
|
||||||
PRINT(4, "BMediaRosterEx::GetAllInputs() (by pointer) node %ld, port %ld\n", node->ID(), node->ControlPort());
|
PRINT(4, "BMediaRosterEx::GetAllInputs() (by pointer) node %" B_PRId32
|
||||||
|
", port %" B_PRId32 "\n", node->ID(), node->ControlPort());
|
||||||
|
|
||||||
result = B_OK;
|
result = B_OK;
|
||||||
cookie = 0;
|
cookie = 0;
|
||||||
@@ -430,7 +437,7 @@ BMediaRosterEx::GetAllInputs(BBufferConsumer* node, List<media_input>* list)
|
|||||||
result = B_ERROR;
|
result = B_ERROR;
|
||||||
}
|
}
|
||||||
#if DEBUG >= 3
|
#if DEBUG >= 3
|
||||||
PRINT(3," next cookie %ld, ", cookie);
|
PRINT(3," next cookie %" B_PRId32 ", ", cookie);
|
||||||
PRINT_INPUT("input ", input);
|
PRINT_INPUT("input ", input);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -450,7 +457,7 @@ BMediaRosterEx::PublishOutputs(const media_node& node, List<media_output>* list)
|
|||||||
status_t rv;
|
status_t rv;
|
||||||
|
|
||||||
count = list->CountItems();
|
count = list->CountItems();
|
||||||
TRACE("PublishOutputs: publishing %ld\n", count);
|
TRACE("PublishOutputs: publishing %" B_PRId32 "\n", count);
|
||||||
|
|
||||||
request.node = node;
|
request.node = node;
|
||||||
request.count = count;
|
request.count = count;
|
||||||
@@ -461,7 +468,7 @@ BMediaRosterEx::PublishOutputs(const media_node& node, List<media_output>* list)
|
|||||||
request.area = create_area("publish outputs", &start_addr,
|
request.area = create_area("publish outputs", &start_addr,
|
||||||
B_ANY_ADDRESS, size, B_NO_LOCK, B_READ_AREA | B_WRITE_AREA);
|
B_ANY_ADDRESS, size, B_NO_LOCK, B_READ_AREA | B_WRITE_AREA);
|
||||||
if (request.area < B_OK) {
|
if (request.area < B_OK) {
|
||||||
ERROR("PublishOutputs: failed to create area, %#lx\n",
|
ERROR("PublishOutputs: failed to create area, %#" B_PRIx32 "\n",
|
||||||
request.area);
|
request.area);
|
||||||
return (status_t)request.area;
|
return (status_t)request.area;
|
||||||
}
|
}
|
||||||
@@ -470,7 +477,7 @@ BMediaRosterEx::PublishOutputs(const media_node& node, List<media_output>* list)
|
|||||||
request.area = -1;
|
request.area = -1;
|
||||||
outputs = request.outputs;
|
outputs = request.outputs;
|
||||||
}
|
}
|
||||||
TRACE("PublishOutputs: area %ld\n", request.area);
|
TRACE("PublishOutputs: area %" B_PRId32 "\n", request.area);
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
for (i = 0, list->Rewind(); list->GetNext(&output); i++) {
|
for (i = 0, list->Rewind(); list->GetNext(&output); i++) {
|
||||||
@@ -499,7 +506,7 @@ BMediaRosterEx::PublishInputs(const media_node& node, List<media_input>* list)
|
|||||||
status_t rv;
|
status_t rv;
|
||||||
|
|
||||||
count = list->CountItems();
|
count = list->CountItems();
|
||||||
TRACE("PublishInputs: publishing %ld\n", count);
|
TRACE("PublishInputs: publishing %" B_PRId32 "\n", count);
|
||||||
|
|
||||||
request.node = node;
|
request.node = node;
|
||||||
request.count = count;
|
request.count = count;
|
||||||
@@ -510,7 +517,8 @@ BMediaRosterEx::PublishInputs(const media_node& node, List<media_input>* list)
|
|||||||
request.area = create_area("publish inputs", &start_addr,
|
request.area = create_area("publish inputs", &start_addr,
|
||||||
B_ANY_ADDRESS, size, B_NO_LOCK, B_READ_AREA | B_WRITE_AREA);
|
B_ANY_ADDRESS, size, B_NO_LOCK, B_READ_AREA | B_WRITE_AREA);
|
||||||
if (request.area < B_OK) {
|
if (request.area < B_OK) {
|
||||||
ERROR("PublishInputs: failed to create area, %#lx\n", request.area);
|
ERROR("PublishInputs: failed to create area, %#" B_PRIx32 "\n",
|
||||||
|
request.area);
|
||||||
return (status_t)request.area;
|
return (status_t)request.area;
|
||||||
}
|
}
|
||||||
inputs = static_cast<media_input *>(start_addr);
|
inputs = static_cast<media_input *>(start_addr);
|
||||||
@@ -518,7 +526,7 @@ BMediaRosterEx::PublishInputs(const media_node& node, List<media_input>* list)
|
|||||||
request.area = -1;
|
request.area = -1;
|
||||||
inputs = request.inputs;
|
inputs = request.inputs;
|
||||||
}
|
}
|
||||||
TRACE("PublishInputs: area %ld\n", request.area);
|
TRACE("PublishInputs: area %" B_PRId32 "\n", request.area);
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
for (i = 0, list->Rewind(); list->GetNext(&input); i++) {
|
for (i = 0, list->Rewind(); list->GetNext(&input); i++) {
|
||||||
@@ -766,8 +774,9 @@ BMediaRoster::ReleaseNode(const media_node& node)
|
|||||||
|
|
||||||
if (node.kind & NODE_KIND_NO_REFCOUNTING) {
|
if (node.kind & NODE_KIND_NO_REFCOUNTING) {
|
||||||
printf("BMediaRoster::ReleaseNode, trying to release reference "
|
printf("BMediaRoster::ReleaseNode, trying to release reference "
|
||||||
"counting disabled timesource, node %ld, port %ld, team %ld\n",
|
"counting disabled timesource, node %" B_PRId32 ", port %" B_PRId32
|
||||||
node.node, node.port, BPrivate::current_team());
|
", team %" B_PRId32 "\n", node.node, node.port,
|
||||||
|
BPrivate::current_team());
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -778,14 +787,16 @@ BMediaRoster::ReleaseNode(const media_node& node)
|
|||||||
request.node = node;
|
request.node = node;
|
||||||
request.team = BPrivate::current_team();
|
request.team = BPrivate::current_team();
|
||||||
|
|
||||||
TRACE("BMediaRoster::ReleaseNode, node %ld, port %ld, team %ld\n",
|
TRACE("BMediaRoster::ReleaseNode, node %" B_PRId32 ", port %" B_PRId32
|
||||||
node.node, node.port, BPrivate::current_team());
|
", team %" B_PRId32 "\n", node.node, node.port,
|
||||||
|
BPrivate::current_team());
|
||||||
|
|
||||||
rv = QueryServer(SERVER_RELEASE_NODE, &request, sizeof(request), &reply,
|
rv = QueryServer(SERVER_RELEASE_NODE, &request, sizeof(request), &reply,
|
||||||
sizeof(reply));
|
sizeof(reply));
|
||||||
if (rv != B_OK) {
|
if (rv != B_OK) {
|
||||||
ERROR("BMediaRoster::ReleaseNode FAILED, node %ld, port %ld, team "
|
ERROR("BMediaRoster::ReleaseNode FAILED, node %" B_PRId32 ", port %"
|
||||||
"%ld!\n", node.node, node.port, BPrivate::current_team());
|
B_PRId32 ", team %" B_PRId32 "!\n", node.node, node.port,
|
||||||
|
BPrivate::current_team());
|
||||||
}
|
}
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
@@ -808,13 +819,14 @@ BMediaRoster::MakeTimeSourceFor(const media_node& forNode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (IS_INVALID_NODE(forNode)) {
|
if (IS_INVALID_NODE(forNode)) {
|
||||||
ERROR("BMediaRoster::MakeTimeSourceFor: for_node invalid, node %ld, "
|
ERROR("BMediaRoster::MakeTimeSourceFor: for_node invalid, node %"
|
||||||
"port %ld, kinds 0x%lx\n", forNode.node, forNode.port,
|
B_PRId32 ", port %" B_PRId32 ", kinds 0x%" B_PRIx32 "\n",
|
||||||
forNode.kind);
|
forNode.node, forNode.port, forNode.kind);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
TRACE("BMediaRoster::MakeTimeSourceFor: node %ld enter\n", forNode.node);
|
TRACE("BMediaRoster::MakeTimeSourceFor: node %" B_PRId32 " enter\n",
|
||||||
|
forNode.node);
|
||||||
|
|
||||||
node_get_timesource_request request;
|
node_get_timesource_request request;
|
||||||
node_get_timesource_reply reply;
|
node_get_timesource_reply reply;
|
||||||
@@ -831,7 +843,8 @@ BMediaRoster::MakeTimeSourceFor(const media_node& forNode)
|
|||||||
|
|
||||||
source = MediaRosterEx(this)->MakeTimeSourceObject(reply.timesource_id);
|
source = MediaRosterEx(this)->MakeTimeSourceObject(reply.timesource_id);
|
||||||
|
|
||||||
TRACE("BMediaRoster::MakeTimeSourceFor: node %ld leave\n", forNode.node);
|
TRACE("BMediaRoster::MakeTimeSourceFor: node %" B_PRId32 " leave\n",
|
||||||
|
forNode.node);
|
||||||
|
|
||||||
return source;
|
return source;
|
||||||
}
|
}
|
||||||
@@ -870,26 +883,26 @@ BMediaRoster::Connect(const media_source& from, const media_destination& to,
|
|||||||
media_node destnode;
|
media_node destnode;
|
||||||
rv = GetNodeFor(NodeIDFor(from.port), &sourcenode);
|
rv = GetNodeFor(NodeIDFor(from.port), &sourcenode);
|
||||||
if (rv != B_OK) {
|
if (rv != B_OK) {
|
||||||
ERROR("BMediaRoster::Connect: Can't find source node for port %ld\n",
|
ERROR("BMediaRoster::Connect: Can't find source node for port %"
|
||||||
from.port);
|
B_PRId32 "\n", from.port);
|
||||||
return B_MEDIA_BAD_SOURCE;
|
return B_MEDIA_BAD_SOURCE;
|
||||||
}
|
}
|
||||||
ReleaseNode(sourcenode);
|
ReleaseNode(sourcenode);
|
||||||
rv = GetNodeFor(NodeIDFor(to.port), &destnode);
|
rv = GetNodeFor(NodeIDFor(to.port), &destnode);
|
||||||
if (rv != B_OK) {
|
if (rv != B_OK) {
|
||||||
ERROR("BMediaRoster::Connect: Can't find destination node for port "
|
ERROR("BMediaRoster::Connect: Can't find destination node for port "
|
||||||
"%ld\n", to.port);
|
"%" B_PRId32 "\n", to.port);
|
||||||
return B_MEDIA_BAD_DESTINATION;
|
return B_MEDIA_BAD_DESTINATION;
|
||||||
}
|
}
|
||||||
ReleaseNode(destnode);
|
ReleaseNode(destnode);
|
||||||
|
|
||||||
if (!(sourcenode.kind & B_BUFFER_PRODUCER)) {
|
if (!(sourcenode.kind & B_BUFFER_PRODUCER)) {
|
||||||
ERROR("BMediaRoster::Connect: source node %ld is not a "
|
ERROR("BMediaRoster::Connect: source node %" B_PRId32 " is not a "
|
||||||
"B_BUFFER_PRODUCER\n", sourcenode.node);
|
"B_BUFFER_PRODUCER\n", sourcenode.node);
|
||||||
return B_MEDIA_BAD_SOURCE;
|
return B_MEDIA_BAD_SOURCE;
|
||||||
}
|
}
|
||||||
if (!(destnode.kind & B_BUFFER_CONSUMER)) {
|
if (!(destnode.kind & B_BUFFER_CONSUMER)) {
|
||||||
ERROR("BMediaRoster::Connect: destination node %ld is not a "
|
ERROR("BMediaRoster::Connect: destination node %" B_PRId32 " is not a "
|
||||||
"B_BUFFER_CONSUMER\n", destnode.node);
|
"B_BUFFER_CONSUMER\n", destnode.node);
|
||||||
return B_MEDIA_BAD_DESTINATION;
|
return B_MEDIA_BAD_DESTINATION;
|
||||||
}
|
}
|
||||||
@@ -907,7 +920,7 @@ BMediaRoster::Connect(const media_source& from, const media_destination& to,
|
|||||||
sizeof(request1), &reply1, sizeof(reply1));
|
sizeof(request1), &reply1, sizeof(reply1));
|
||||||
if (rv != B_OK) {
|
if (rv != B_OK) {
|
||||||
ERROR("BMediaRoster::Connect: aborted after "
|
ERROR("BMediaRoster::Connect: aborted after "
|
||||||
"BBufferProducer::FormatProposal, status = %#lx\n",rv);
|
"BBufferProducer::FormatProposal, status = %#" B_PRIx32 "\n",rv);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
// reply1.format now contains the format proposed by the producer
|
// reply1.format now contains the format proposed by the producer
|
||||||
@@ -925,7 +938,7 @@ BMediaRoster::Connect(const media_source& from, const media_destination& to,
|
|||||||
sizeof(request2), &reply2, sizeof(reply2));
|
sizeof(request2), &reply2, sizeof(reply2));
|
||||||
if (rv != B_OK) {
|
if (rv != B_OK) {
|
||||||
ERROR("BMediaRoster::Connect: aborted after "
|
ERROR("BMediaRoster::Connect: aborted after "
|
||||||
"BBufferConsumer::AcceptFormat, status = %#lx\n",rv);
|
"BBufferConsumer::AcceptFormat, status = %#" B_PRIx32 "\n",rv);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
// reply2.format now contains the format accepted by the consumer
|
// reply2.format now contains the format accepted by the consumer
|
||||||
@@ -945,7 +958,7 @@ BMediaRoster::Connect(const media_source& from, const media_destination& to,
|
|||||||
sizeof(request3), &reply3, sizeof(reply3));
|
sizeof(request3), &reply3, sizeof(reply3));
|
||||||
if (rv != B_OK) {
|
if (rv != B_OK) {
|
||||||
ERROR("BMediaRoster::Connect: aborted after "
|
ERROR("BMediaRoster::Connect: aborted after "
|
||||||
"BBufferProducer::PrepareToConnect, status = %#lx\n",rv);
|
"BBufferProducer::PrepareToConnect, status = %#" B_PRIx32 "\n", rv);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
// reply3.format is still our pretty media format
|
// reply3.format is still our pretty media format
|
||||||
@@ -971,7 +984,8 @@ BMediaRoster::Connect(const media_source& from, const media_destination& to,
|
|||||||
sizeof(request4), &reply4, sizeof(reply4));
|
sizeof(request4), &reply4, sizeof(reply4));
|
||||||
if (con_status != B_OK) {
|
if (con_status != B_OK) {
|
||||||
ERROR("BMediaRoster::Connect: aborting after "
|
ERROR("BMediaRoster::Connect: aborting after "
|
||||||
"BBufferConsumer::Connected, status = %#lx\n",con_status);
|
"BBufferConsumer::Connected, status = %#" B_PRIx32 "\n",
|
||||||
|
con_status);
|
||||||
// we do NOT return here!
|
// we do NOT return here!
|
||||||
}
|
}
|
||||||
// con_status contains the status code to be supplied to
|
// con_status contains the status code to be supplied to
|
||||||
@@ -999,7 +1013,7 @@ BMediaRoster::Connect(const media_source& from, const media_destination& to,
|
|||||||
}
|
}
|
||||||
if (rv != B_OK) {
|
if (rv != B_OK) {
|
||||||
ERROR("BMediaRoster::Connect: aborted after BBufferProducer::Connect()"
|
ERROR("BMediaRoster::Connect: aborted after BBufferProducer::Connect()"
|
||||||
", status = %#lx\n",rv);
|
", status = %#" B_PRIx32 "\n", rv);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
// reply5.name contains the name assigned to the connection by the producer
|
// reply5.name contains the name assigned to the connection by the producer
|
||||||
@@ -1091,26 +1105,27 @@ BMediaRoster::Disconnect(media_node_id source_nodeid,
|
|||||||
media_node destnode;
|
media_node destnode;
|
||||||
if (GetNodeFor(source_nodeid, &sourcenode) == B_OK) {
|
if (GetNodeFor(source_nodeid, &sourcenode) == B_OK) {
|
||||||
if (!(sourcenode.kind & B_BUFFER_PRODUCER)) {
|
if (!(sourcenode.kind & B_BUFFER_PRODUCER)) {
|
||||||
ERROR("BMediaRoster::Disconnect: source_nodeid %ld is not a "
|
ERROR("BMediaRoster::Disconnect: source_nodeid %" B_PRId32
|
||||||
"B_BUFFER_PRODUCER\n", source_nodeid);
|
" is not a B_BUFFER_PRODUCER\n", source_nodeid);
|
||||||
}
|
}
|
||||||
if (MediaRosterEx(this)->GetAllOutputs(sourcenode , &outlist) == B_OK)
|
if (MediaRosterEx(this)->GetAllOutputs(sourcenode , &outlist) == B_OK)
|
||||||
MediaRosterEx(this)->PublishOutputs(sourcenode , &outlist);
|
MediaRosterEx(this)->PublishOutputs(sourcenode , &outlist);
|
||||||
ReleaseNode(sourcenode);
|
ReleaseNode(sourcenode);
|
||||||
} else {
|
} else {
|
||||||
ERROR("BMediaRoster::Disconnect: GetNodeFor source_nodeid %ld failed\n", source_nodeid);
|
ERROR("BMediaRoster::Disconnect: GetNodeFor source_nodeid %" B_PRId32
|
||||||
|
" failed\n", source_nodeid);
|
||||||
}
|
}
|
||||||
if (GetNodeFor(destination_nodeid, &destnode) == B_OK) {
|
if (GetNodeFor(destination_nodeid, &destnode) == B_OK) {
|
||||||
if (!(destnode.kind & B_BUFFER_CONSUMER)) {
|
if (!(destnode.kind & B_BUFFER_CONSUMER)) {
|
||||||
ERROR("BMediaRoster::Disconnect: destination_nodeid %ld is not a "
|
ERROR("BMediaRoster::Disconnect: destination_nodeid %" B_PRId32
|
||||||
"B_BUFFER_CONSUMER\n", destination_nodeid);
|
" is not a B_BUFFER_CONSUMER\n", destination_nodeid);
|
||||||
}
|
}
|
||||||
if (MediaRosterEx(this)->GetAllInputs(destnode , &inlist) == B_OK)
|
if (MediaRosterEx(this)->GetAllInputs(destnode , &inlist) == B_OK)
|
||||||
MediaRosterEx(this)->PublishInputs(destnode, &inlist);
|
MediaRosterEx(this)->PublishInputs(destnode, &inlist);
|
||||||
ReleaseNode(destnode);
|
ReleaseNode(destnode);
|
||||||
} else {
|
} else {
|
||||||
ERROR("BMediaRoster::Disconnect: GetNodeFor destination_nodeid %ld "
|
ERROR("BMediaRoster::Disconnect: GetNodeFor destination_nodeid %"
|
||||||
"failed\n", destination_nodeid);
|
B_PRId32 " failed\n", destination_nodeid);
|
||||||
}
|
}
|
||||||
|
|
||||||
// send a notification
|
// send a notification
|
||||||
@@ -1124,45 +1139,47 @@ status_t
|
|||||||
BMediaRoster::Disconnect(const media_output& output, const media_input& input)
|
BMediaRoster::Disconnect(const media_output& output, const media_input& input)
|
||||||
{
|
{
|
||||||
if (IS_INVALID_NODEID(output.node.node)) {
|
if (IS_INVALID_NODEID(output.node.node)) {
|
||||||
printf("BMediaRoster::Disconnect: output.node.node %ld invalid\n",
|
printf("BMediaRoster::Disconnect: output.node.node %" B_PRId32
|
||||||
output.node.node);
|
" invalid\n", output.node.node);
|
||||||
return B_MEDIA_BAD_SOURCE;
|
return B_MEDIA_BAD_SOURCE;
|
||||||
}
|
}
|
||||||
if (IS_INVALID_NODEID(input.node.node)) {
|
if (IS_INVALID_NODEID(input.node.node)) {
|
||||||
printf("BMediaRoster::Disconnect: input.node.node %ld invalid\n",
|
printf("BMediaRoster::Disconnect: input.node.node %" B_PRId32
|
||||||
input.node.node);
|
" invalid\n", input.node.node);
|
||||||
return B_MEDIA_BAD_DESTINATION;
|
return B_MEDIA_BAD_DESTINATION;
|
||||||
}
|
}
|
||||||
if (!(output.node.kind & B_BUFFER_PRODUCER)) {
|
if (!(output.node.kind & B_BUFFER_PRODUCER)) {
|
||||||
printf("BMediaRoster::Disconnect: output.node.kind 0x%lx is no "
|
printf("BMediaRoster::Disconnect: output.node.kind 0x%" B_PRIx32
|
||||||
"B_BUFFER_PRODUCER\n", output.node.kind);
|
" is no B_BUFFER_PRODUCER\n", output.node.kind);
|
||||||
return B_MEDIA_BAD_SOURCE;
|
return B_MEDIA_BAD_SOURCE;
|
||||||
}
|
}
|
||||||
if (!(input.node.kind & B_BUFFER_CONSUMER)) {
|
if (!(input.node.kind & B_BUFFER_CONSUMER)) {
|
||||||
printf("BMediaRoster::Disconnect: input.node.kind 0x%lx is no "
|
printf("BMediaRoster::Disconnect: input.node.kind 0x%" B_PRIx32
|
||||||
"B_BUFFER_PRODUCER\n", input.node.kind);
|
" is no B_BUFFER_PRODUCER\n", input.node.kind);
|
||||||
return B_MEDIA_BAD_DESTINATION;
|
return B_MEDIA_BAD_DESTINATION;
|
||||||
}
|
}
|
||||||
if (input.source.port != output.source.port) {
|
if (input.source.port != output.source.port) {
|
||||||
printf("BMediaRoster::Disconnect: input.source.port %ld doesn't match "
|
printf("BMediaRoster::Disconnect: input.source.port %" B_PRId32
|
||||||
"output.source.port %ld\n", input.source.port, output.source.port);
|
" doesn't match output.source.port %" B_PRId32 "\n",
|
||||||
|
input.source.port, output.source.port);
|
||||||
return B_MEDIA_BAD_SOURCE;
|
return B_MEDIA_BAD_SOURCE;
|
||||||
}
|
}
|
||||||
if (input.source.id != output.source.id) {
|
if (input.source.id != output.source.id) {
|
||||||
printf("BMediaRoster::Disconnect: input.source.id %ld doesn't match "
|
printf("BMediaRoster::Disconnect: input.source.id %" B_PRId32
|
||||||
"output.source.id %ld\n", input.source.id, output.source.id);
|
" doesn't match output.source.id %" B_PRId32 "\n", input.source.id,
|
||||||
|
output.source.id);
|
||||||
return B_MEDIA_BAD_SOURCE;
|
return B_MEDIA_BAD_SOURCE;
|
||||||
}
|
}
|
||||||
if (input.destination.port != output.destination.port) {
|
if (input.destination.port != output.destination.port) {
|
||||||
printf("BMediaRoster::Disconnect: input.destination.port %ld doesn't "
|
printf("BMediaRoster::Disconnect: input.destination.port %" B_PRId32
|
||||||
"match output.destination.port %ld\n", input.destination.port,
|
" doesn't match output.destination.port %" B_PRId32 "\n",
|
||||||
output.destination.port);
|
input.destination.port, output.destination.port);
|
||||||
return B_MEDIA_BAD_DESTINATION;
|
return B_MEDIA_BAD_DESTINATION;
|
||||||
}
|
}
|
||||||
if (input.destination.id != output.destination.id) {
|
if (input.destination.id != output.destination.id) {
|
||||||
printf("BMediaRoster::Disconnect: input.destination.id %ld doesn't "
|
printf("BMediaRoster::Disconnect: input.destination.id %" B_PRId32
|
||||||
"match output.destination.id %ld\n", input.destination.id,
|
" doesn't match output.destination.id %" B_PRId32 "\n",
|
||||||
output.destination.id);
|
input.destination.id, output.destination.id);
|
||||||
return B_MEDIA_BAD_DESTINATION;
|
return B_MEDIA_BAD_DESTINATION;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1178,8 +1195,8 @@ BMediaRoster::StartNode(const media_node& node, bigtime_t atPerformanceTime)
|
|||||||
if (node.node <= 0)
|
if (node.node <= 0)
|
||||||
return B_MEDIA_BAD_NODE;
|
return B_MEDIA_BAD_NODE;
|
||||||
|
|
||||||
TRACE("BMediaRoster::StartNode, node %ld, at perf %Ld\n", node.node,
|
TRACE("BMediaRoster::StartNode, node %" B_PRId32 ", at perf %" B_PRId64
|
||||||
atPerformanceTime);
|
"\n", node.node, atPerformanceTime);
|
||||||
|
|
||||||
node_start_command command;
|
node_start_command command;
|
||||||
command.performance_time = atPerformanceTime;
|
command.performance_time = atPerformanceTime;
|
||||||
@@ -1196,8 +1213,8 @@ BMediaRoster::StopNode(const media_node& node, bigtime_t atPerformanceTime,
|
|||||||
if (IS_INVALID_NODE(node))
|
if (IS_INVALID_NODE(node))
|
||||||
return B_MEDIA_BAD_NODE;
|
return B_MEDIA_BAD_NODE;
|
||||||
|
|
||||||
TRACE("BMediaRoster::StopNode, node %ld, at perf %Ld %s\n", node.node,
|
TRACE("BMediaRoster::StopNode, node %" B_PRId32 ", at perf %" B_PRId64
|
||||||
atPerformanceTime, immediate ? "NOW" : "");
|
" %s\n", node.node, atPerformanceTime, immediate ? "NOW" : "");
|
||||||
|
|
||||||
node_stop_command command;
|
node_stop_command command;
|
||||||
command.performance_time = atPerformanceTime;
|
command.performance_time = atPerformanceTime;
|
||||||
@@ -1215,8 +1232,8 @@ BMediaRoster::SeekNode(const media_node& node, bigtime_t toMediaTime,
|
|||||||
if (IS_INVALID_NODE(node))
|
if (IS_INVALID_NODE(node))
|
||||||
return B_MEDIA_BAD_NODE;
|
return B_MEDIA_BAD_NODE;
|
||||||
|
|
||||||
TRACE("BMediaRoster::SeekNode, node %ld, at perf %Ld, to perf %Ld\n",
|
TRACE("BMediaRoster::SeekNode, node %" B_PRId32 ", at perf %" B_PRId64
|
||||||
node.node, atPerformanceTime, toMediaTime);
|
", to perf %" B_PRId64 "\n", node.node, atPerformanceTime, toMediaTime);
|
||||||
|
|
||||||
node_seek_command command;
|
node_seek_command command;
|
||||||
command.media_time = toMediaTime;
|
command.media_time = toMediaTime;
|
||||||
@@ -1232,26 +1249,27 @@ BMediaRoster::StartTimeSource(const media_node& node, bigtime_t atRealTime)
|
|||||||
CALLED();
|
CALLED();
|
||||||
if (IS_SYSTEM_TIMESOURCE(node)) {
|
if (IS_SYSTEM_TIMESOURCE(node)) {
|
||||||
// TODO: debug this
|
// TODO: debug this
|
||||||
//ERROR("BMediaRoster::StartTimeSource node %ld is system timesource\n", node.node);
|
//ERROR("BMediaRoster::StartTimeSource node %" B_PRId32 " is system timesource\n", node.node);
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
// if (IS_SHADOW_TIMESOURCE(node)) {
|
// if (IS_SHADOW_TIMESOURCE(node)) {
|
||||||
// // TODO: debug this
|
// // TODO: debug this
|
||||||
// ERROR("BMediaRoster::StartTimeSource node %ld is shadow timesource\n", node.node);
|
// ERROR("BMediaRoster::StartTimeSource node %" B_PRId32 " is shadow timesource\n", node.node);
|
||||||
// return B_OK;
|
// return B_OK;
|
||||||
// }
|
// }
|
||||||
if (IS_INVALID_NODE(node)) {
|
if (IS_INVALID_NODE(node)) {
|
||||||
ERROR("BMediaRoster::StartTimeSource node %ld invalid\n", node.node);
|
ERROR("BMediaRoster::StartTimeSource node %" B_PRId32 " invalid\n",
|
||||||
return B_MEDIA_BAD_NODE;
|
|
||||||
}
|
|
||||||
if ((node.kind & B_TIME_SOURCE) == 0) {
|
|
||||||
ERROR("BMediaRoster::StartTimeSource node %ld is no timesource\n",
|
|
||||||
node.node);
|
node.node);
|
||||||
return B_MEDIA_BAD_NODE;
|
return B_MEDIA_BAD_NODE;
|
||||||
}
|
}
|
||||||
|
if ((node.kind & B_TIME_SOURCE) == 0) {
|
||||||
|
ERROR("BMediaRoster::StartTimeSource node %" B_PRId32
|
||||||
|
" is no timesource\n", node.node);
|
||||||
|
return B_MEDIA_BAD_NODE;
|
||||||
|
}
|
||||||
|
|
||||||
TRACE("BMediaRoster::StartTimeSource, node %ld, at real %Ld\n", node.node,
|
TRACE("BMediaRoster::StartTimeSource, node %" B_PRId32 ", at real %"
|
||||||
atRealTime);
|
B_PRId64 "\n", node.node, atRealTime);
|
||||||
|
|
||||||
BTimeSource::time_source_op_info msg;
|
BTimeSource::time_source_op_info msg;
|
||||||
msg.op = BTimeSource::B_TIMESOURCE_START;
|
msg.op = BTimeSource::B_TIMESOURCE_START;
|
||||||
@@ -1277,17 +1295,18 @@ BMediaRoster::StopTimeSource(const media_node& node, bigtime_t atRealTime,
|
|||||||
// return B_OK;
|
// return B_OK;
|
||||||
// }
|
// }
|
||||||
if (IS_INVALID_NODE(node)) {
|
if (IS_INVALID_NODE(node)) {
|
||||||
ERROR("BMediaRoster::StopTimeSource node %ld invalid\n", node.node);
|
ERROR("BMediaRoster::StopTimeSource node %" B_PRId32 " invalid\n",
|
||||||
return B_MEDIA_BAD_NODE;
|
|
||||||
}
|
|
||||||
if ((node.kind & B_TIME_SOURCE) == 0) {
|
|
||||||
ERROR("BMediaRoster::StopTimeSource node %ld is no timesource\n",
|
|
||||||
node.node);
|
node.node);
|
||||||
return B_MEDIA_BAD_NODE;
|
return B_MEDIA_BAD_NODE;
|
||||||
}
|
}
|
||||||
|
if ((node.kind & B_TIME_SOURCE) == 0) {
|
||||||
|
ERROR("BMediaRoster::StopTimeSource node %" B_PRId32 " is no "
|
||||||
|
"timesource\n", node.node);
|
||||||
|
return B_MEDIA_BAD_NODE;
|
||||||
|
}
|
||||||
|
|
||||||
TRACE("BMediaRoster::StopTimeSource, node %ld, at real %Ld %s\n",
|
TRACE("BMediaRoster::StopTimeSource, node %" B_PRId32 ", at real %" B_PRId64
|
||||||
node.node, atRealTime, immediate ? "NOW" : "");
|
" %s\n", node.node, atRealTime, immediate ? "NOW" : "");
|
||||||
|
|
||||||
BTimeSource::time_source_op_info msg;
|
BTimeSource::time_source_op_info msg;
|
||||||
msg.op = immediate ? BTimeSource::B_TIMESOURCE_STOP_IMMEDIATELY
|
msg.op = immediate ? BTimeSource::B_TIMESOURCE_STOP_IMMEDIATELY
|
||||||
@@ -1316,17 +1335,18 @@ BMediaRoster::SeekTimeSource(const media_node& node,
|
|||||||
// return B_OK;
|
// return B_OK;
|
||||||
// }
|
// }
|
||||||
if (IS_INVALID_NODE(node)) {
|
if (IS_INVALID_NODE(node)) {
|
||||||
ERROR("BMediaRoster::SeekTimeSource node %ld invalid\n", node.node);
|
ERROR("BMediaRoster::SeekTimeSource node %" B_PRId32 " invalid\n",
|
||||||
return B_MEDIA_BAD_NODE;
|
|
||||||
}
|
|
||||||
if ((node.kind & B_TIME_SOURCE) == 0) {
|
|
||||||
ERROR("BMediaRoster::SeekTimeSource node %ld is no timesource\n",
|
|
||||||
node.node);
|
node.node);
|
||||||
return B_MEDIA_BAD_NODE;
|
return B_MEDIA_BAD_NODE;
|
||||||
}
|
}
|
||||||
|
if ((node.kind & B_TIME_SOURCE) == 0) {
|
||||||
|
ERROR("BMediaRoster::SeekTimeSource node %" B_PRId32
|
||||||
|
" is no timesource\n", node.node);
|
||||||
|
return B_MEDIA_BAD_NODE;
|
||||||
|
}
|
||||||
|
|
||||||
TRACE("BMediaRoster::SeekTimeSource, node %ld, at real %Ld, to perf %Ld\n",
|
TRACE("BMediaRoster::SeekTimeSource, node %" B_PRId32 ", at real %" B_PRId64
|
||||||
node.node, atRealTime, toPerformanceTime);
|
", to perf %" B_PRId64 "\n", node.node, atRealTime, toPerformanceTime);
|
||||||
|
|
||||||
BTimeSource::time_source_op_info msg;
|
BTimeSource::time_source_op_info msg;
|
||||||
msg.op = BTimeSource::B_TIMESOURCE_SEEK;
|
msg.op = BTimeSource::B_TIMESOURCE_SEEK;
|
||||||
@@ -1349,7 +1369,8 @@ BMediaRoster::SyncToNode(const media_node& node, bigtime_t atTime,
|
|||||||
status_t
|
status_t
|
||||||
BMediaRoster::SetRunModeNode(const media_node& node, BMediaNode::run_mode mode)
|
BMediaRoster::SetRunModeNode(const media_node& node, BMediaNode::run_mode mode)
|
||||||
{
|
{
|
||||||
TRACE("BMediaRoster::SetRunModeNode, node %ld, mode %d\n", node.node, mode);
|
TRACE("BMediaRoster::SetRunModeNode, node %" B_PRId32 ", mode %d\n",
|
||||||
|
node.node, mode);
|
||||||
if (IS_INVALID_NODE(node))
|
if (IS_INVALID_NODE(node))
|
||||||
return B_MEDIA_BAD_NODE;
|
return B_MEDIA_BAD_NODE;
|
||||||
|
|
||||||
@@ -1385,8 +1406,8 @@ status_t
|
|||||||
BMediaRoster::SetProducerRunModeDelay(const media_node& node,
|
BMediaRoster::SetProducerRunModeDelay(const media_node& node,
|
||||||
bigtime_t delay, BMediaNode::run_mode mode)
|
bigtime_t delay, BMediaNode::run_mode mode)
|
||||||
{
|
{
|
||||||
TRACE("BMediaRoster::SetProducerRunModeDelay, node %ld, delay %Ld, "
|
TRACE("BMediaRoster::SetProducerRunModeDelay, node %" B_PRId32 ", delay %"
|
||||||
"mode %d\n", node.node, delay, mode);
|
B_PRId64 ", mode %d\n", node.node, delay, mode);
|
||||||
if (IS_INVALID_NODE(node))
|
if (IS_INVALID_NODE(node))
|
||||||
return B_MEDIA_BAD_NODE;
|
return B_MEDIA_BAD_NODE;
|
||||||
if ((node.kind & B_BUFFER_PRODUCER) == 0)
|
if ((node.kind & B_BUFFER_PRODUCER) == 0)
|
||||||
@@ -1522,13 +1543,13 @@ BMediaRoster::GetFreeInputsFor(const media_node& node,
|
|||||||
{
|
{
|
||||||
CALLED();
|
CALLED();
|
||||||
if (IS_INVALID_NODE(node)) {
|
if (IS_INVALID_NODE(node)) {
|
||||||
ERROR("BMediaRoster::GetFreeInputsFor: node %ld, port %ld invalid\n",
|
ERROR("BMediaRoster::GetFreeInputsFor: node %" B_PRId32 ", port %"
|
||||||
node.node, node.port);
|
B_PRId32 " invalid\n", node.node, node.port);
|
||||||
return B_MEDIA_BAD_NODE;
|
return B_MEDIA_BAD_NODE;
|
||||||
}
|
}
|
||||||
if ((node.kind & B_BUFFER_CONSUMER) == 0) {
|
if ((node.kind & B_BUFFER_CONSUMER) == 0) {
|
||||||
ERROR("BMediaRoster::GetFreeInputsFor: node %ld, port %ld is not a "
|
ERROR("BMediaRoster::GetFreeInputsFor: node %" B_PRId32 ", port %"
|
||||||
"consumer\n", node.node, node.port);
|
B_PRId32 " is not a consumer\n", node.node, node.port);
|
||||||
return B_MEDIA_BAD_NODE;
|
return B_MEDIA_BAD_NODE;
|
||||||
}
|
}
|
||||||
if (out_free_inputs == NULL || out_total_count == NULL)
|
if (out_free_inputs == NULL || out_total_count == NULL)
|
||||||
@@ -1544,8 +1565,9 @@ BMediaRoster::GetFreeInputsFor(const media_node& node,
|
|||||||
if (B_OK != rv)
|
if (B_OK != rv)
|
||||||
return rv;
|
return rv;
|
||||||
|
|
||||||
PRINT(4, "BMediaRoster::GetFreeInputsFor node %ld, max %ld, filter-type "
|
PRINT(4, "BMediaRoster::GetFreeInputsFor node %" B_PRId32 ", max %" B_PRId32
|
||||||
"%ld\n", node.node, buf_num_inputs, filter_type);
|
", filter-type %" B_PRId32 "\n", node.node, buf_num_inputs,
|
||||||
|
filter_type);
|
||||||
|
|
||||||
int32 i;
|
int32 i;
|
||||||
for (i = 0, list.Rewind(); list.GetNext(&input);) {
|
for (i = 0, list.Rewind(); list.GetNext(&input);) {
|
||||||
@@ -1596,8 +1618,8 @@ BMediaRoster::GetConnectedInputsFor(const media_node& node,
|
|||||||
if (B_OK != rv)
|
if (B_OK != rv)
|
||||||
return rv;
|
return rv;
|
||||||
|
|
||||||
PRINT(4, "BMediaRoster::GetConnectedInputsFor node %ld, max %ld\n",
|
PRINT(4, "BMediaRoster::GetConnectedInputsFor node %" B_PRId32 ", max %"
|
||||||
node.node, buf_num_inputs);
|
B_PRId32 "\n", node.node, buf_num_inputs);
|
||||||
|
|
||||||
int32 i;
|
int32 i;
|
||||||
for (i = 0, list.Rewind(); list.GetNext(&input);) {
|
for (i = 0, list.Rewind(); list.GetNext(&input);) {
|
||||||
@@ -1639,8 +1661,8 @@ BMediaRoster::GetAllInputsFor(const media_node& node, media_input* out_inputs,
|
|||||||
if (B_OK != rv)
|
if (B_OK != rv)
|
||||||
return rv;
|
return rv;
|
||||||
|
|
||||||
PRINT(4, "BMediaRoster::GetAllInputsFor node %ld, max %ld\n", node.node,
|
PRINT(4, "BMediaRoster::GetAllInputsFor node %" B_PRId32 ", max %" B_PRId32
|
||||||
buf_num_inputs);
|
"\n", node.node, buf_num_inputs);
|
||||||
|
|
||||||
int32 i;
|
int32 i;
|
||||||
for (i = 0, list.Rewind(); list.GetNext(&input); i++) {
|
for (i = 0, list.Rewind(); list.GetNext(&input); i++) {
|
||||||
@@ -1680,8 +1702,9 @@ BMediaRoster::GetFreeOutputsFor(const media_node& node,
|
|||||||
if (B_OK != rv)
|
if (B_OK != rv)
|
||||||
return rv;
|
return rv;
|
||||||
|
|
||||||
PRINT(4, "BMediaRoster::GetFreeOutputsFor node %ld, max %ld, filter-type "
|
PRINT(4, "BMediaRoster::GetFreeOutputsFor node %" B_PRId32 ", max %"
|
||||||
"%ld\n", node.node, buf_num_outputs, filter_type);
|
B_PRId32 ", filter-type %" B_PRId32 "\n", node.node, buf_num_outputs,
|
||||||
|
filter_type);
|
||||||
|
|
||||||
int32 i;
|
int32 i;
|
||||||
for (i = 0, list.Rewind(); list.GetNext(&output);) {
|
for (i = 0, list.Rewind(); list.GetNext(&output);) {
|
||||||
@@ -1732,8 +1755,8 @@ BMediaRoster::GetConnectedOutputsFor(const media_node& node,
|
|||||||
if (B_OK != rv)
|
if (B_OK != rv)
|
||||||
return rv;
|
return rv;
|
||||||
|
|
||||||
PRINT(4, "BMediaRoster::GetConnectedOutputsFor node %ld, max %ld\n",
|
PRINT(4, "BMediaRoster::GetConnectedOutputsFor node %" B_PRId32 ", max %"
|
||||||
node.node, buf_num_outputs);
|
B_PRId32 "\n", node.node, buf_num_outputs);
|
||||||
|
|
||||||
int32 i;
|
int32 i;
|
||||||
for (i = 0, list.Rewind(); list.GetNext(&output);) {
|
for (i = 0, list.Rewind(); list.GetNext(&output);) {
|
||||||
@@ -1777,8 +1800,8 @@ BMediaRoster::GetAllOutputsFor(const media_node& node,
|
|||||||
if (B_OK != rv)
|
if (B_OK != rv)
|
||||||
return rv;
|
return rv;
|
||||||
|
|
||||||
PRINT(4, "BMediaRoster::GetAllOutputsFor node %ld, max %ld\n", node.node,
|
PRINT(4, "BMediaRoster::GetAllOutputsFor node %" B_PRId32 ", max %" B_PRId32
|
||||||
buf_num_outputs);
|
"\n", node.node, buf_num_outputs);
|
||||||
|
|
||||||
int32 i;
|
int32 i;
|
||||||
for (i = 0, list.Rewind(); list.GetNext(&output); i++) {
|
for (i = 0, list.Rewind(); list.GetNext(&output); i++) {
|
||||||
@@ -1935,8 +1958,8 @@ BMediaRosterEx::RegisterNode(BMediaNode* node, media_addon_id addOnID,
|
|||||||
request.team = BPrivate::current_team();
|
request.team = BPrivate::current_team();
|
||||||
|
|
||||||
TRACE("BMediaRoster::RegisterNode: sending SERVER_REGISTER_NODE: port "
|
TRACE("BMediaRoster::RegisterNode: sending SERVER_REGISTER_NODE: port "
|
||||||
"%ld, kinds 0x%Lx, team %ld, name '%s'\n", request.port, request.kinds,
|
"%" B_PRId32 ", kinds 0x%" B_PRIx64 ", team %" B_PRId32 ", name '%s'\n",
|
||||||
request.team, request.name);
|
request.port, request.kinds, request.team, request.name);
|
||||||
|
|
||||||
status_t status = QueryServer(SERVER_REGISTER_NODE, &request,
|
status_t status = QueryServer(SERVER_REGISTER_NODE, &request,
|
||||||
sizeof(request), &reply, sizeof(reply));
|
sizeof(request), &reply, sizeof(reply));
|
||||||
@@ -2059,8 +2082,9 @@ BMediaRoster::UnregisterNode(BMediaNode* node)
|
|||||||
status_t status = QueryServer(SERVER_UNREGISTER_NODE, &request,
|
status_t status = QueryServer(SERVER_UNREGISTER_NODE, &request,
|
||||||
sizeof(request), &reply, sizeof(reply));
|
sizeof(request), &reply, sizeof(reply));
|
||||||
if (status != B_OK) {
|
if (status != B_OK) {
|
||||||
ERROR("BMediaRoster::UnregisterNode: failed to unregister node id %ld, "
|
ERROR("BMediaRoster::UnregisterNode: failed to unregister node id %"
|
||||||
"name '%s': %s\n", node->ID(), node->Name(), strerror(status));
|
B_PRId32 ", name '%s': %s\n", node->ID(), node->Name(),
|
||||||
|
strerror(status));
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2135,16 +2159,16 @@ BMediaRoster::SetTimeSourceFor(media_node_id node, media_node_id time_source)
|
|||||||
media_node clone;
|
media_node clone;
|
||||||
status_t rv, result;
|
status_t rv, result;
|
||||||
|
|
||||||
TRACE("BMediaRoster::SetTimeSourceFor: node %ld will be assigned time "
|
TRACE("BMediaRoster::SetTimeSourceFor: node %" B_PRId32 " will be assigned "
|
||||||
"source %ld\n", node, time_source);
|
"time source %" B_PRId32 "\n", node, time_source);
|
||||||
TRACE("BMediaRoster::SetTimeSourceFor: node %ld time source %ld enter\n",
|
TRACE("BMediaRoster::SetTimeSourceFor: node %" B_PRId32 " time source %"
|
||||||
node, time_source);
|
B_PRId32 " enter\n", node, time_source);
|
||||||
|
|
||||||
// we need to get a clone of the node to have a port id
|
// we need to get a clone of the node to have a port id
|
||||||
rv = GetNodeFor(node, &clone);
|
rv = GetNodeFor(node, &clone);
|
||||||
if (rv != B_OK) {
|
if (rv != B_OK) {
|
||||||
ERROR("BMediaRoster::SetTimeSourceFor, GetNodeFor failed, node id "
|
ERROR("BMediaRoster::SetTimeSourceFor, GetNodeFor failed, node id %"
|
||||||
"%ld\n", node);
|
B_PRId32 "\n", node);
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2156,20 +2180,20 @@ BMediaRoster::SetTimeSourceFor(media_node_id node, media_node_id time_source)
|
|||||||
rv = SendToPort(clone.port, NODE_SET_TIMESOURCE, &cmd, sizeof(cmd));
|
rv = SendToPort(clone.port, NODE_SET_TIMESOURCE, &cmd, sizeof(cmd));
|
||||||
if (rv != B_OK) {
|
if (rv != B_OK) {
|
||||||
ERROR("BMediaRoster::SetTimeSourceFor, sending NODE_SET_TIMESOURCE "
|
ERROR("BMediaRoster::SetTimeSourceFor, sending NODE_SET_TIMESOURCE "
|
||||||
"failed, node id %ld\n", node);
|
"failed, node id %" B_PRId32 "\n", node);
|
||||||
result = B_ERROR;
|
result = B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
// we release the clone
|
// we release the clone
|
||||||
rv = ReleaseNode(clone);
|
rv = ReleaseNode(clone);
|
||||||
if (rv != B_OK) {
|
if (rv != B_OK) {
|
||||||
ERROR("BMediaRoster::SetTimeSourceFor, ReleaseNode failed, node id "
|
ERROR("BMediaRoster::SetTimeSourceFor, ReleaseNode failed, node id %"
|
||||||
"%ld\n", node);
|
B_PRId32 "\n", node);
|
||||||
result = B_ERROR;
|
result = B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
TRACE("BMediaRoster::SetTimeSourceFor: node %ld time source %ld leave\n",
|
TRACE("BMediaRoster::SetTimeSourceFor: node %" B_PRId32 " time source %"
|
||||||
node, time_source);
|
B_PRId32 " leave\n", node, time_source);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -2202,7 +2226,7 @@ BMediaRoster::GetParameterWebFor(const media_node& node, BParameterWeb** _web)
|
|||||||
B_NO_LOCK, B_READ_AREA | B_WRITE_AREA);
|
B_NO_LOCK, B_READ_AREA | B_WRITE_AREA);
|
||||||
if (area < B_OK) {
|
if (area < B_OK) {
|
||||||
ERROR("BMediaRoster::GetParameterWebFor couldn't create area of "
|
ERROR("BMediaRoster::GetParameterWebFor couldn't create area of "
|
||||||
"size %ld\n", size);
|
"size %" B_PRId32 "\n", size);
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
request.max_size = size;
|
request.max_size = size;
|
||||||
@@ -2218,8 +2242,8 @@ BMediaRoster::GetParameterWebFor(const media_node& node, BParameterWeb** _web)
|
|||||||
if (reply.size == 0) {
|
if (reply.size == 0) {
|
||||||
// no parameter web available
|
// no parameter web available
|
||||||
// TODO: should we return an error?
|
// TODO: should we return an error?
|
||||||
ERROR("BMediaRoster::GetParameterWebFor node %ld has no parameter "
|
ERROR("BMediaRoster::GetParameterWebFor node %" B_PRId32
|
||||||
"web\n", node.node);
|
" has no parameter web\n", node.node);
|
||||||
*_web = new (std::nothrow) BParameterWeb();
|
*_web = new (std::nothrow) BParameterWeb();
|
||||||
delete_area(area);
|
delete_area(area);
|
||||||
return *_web != NULL ? B_OK : B_NO_MEMORY;
|
return *_web != NULL ? B_OK : B_NO_MEMORY;
|
||||||
@@ -2230,10 +2254,11 @@ BMediaRoster::GetParameterWebFor(const media_node& node, BParameterWeb** _web)
|
|||||||
if (*_web == NULL)
|
if (*_web == NULL)
|
||||||
rv = B_NO_MEMORY;
|
rv = B_NO_MEMORY;
|
||||||
else {
|
else {
|
||||||
printf("BMediaRoster::GetParameterWebFor Unflattening %ld "
|
printf("BMediaRoster::GetParameterWebFor Unflattening %"
|
||||||
"bytes, 0x%08lx, 0x%08lx, 0x%08lx, 0x%08lx\n",
|
B_PRId32 " bytes, %#" B_PRIx32 ", %#" B_PRIx32 ", %#"
|
||||||
reply.size, ((uint32*)data)[0], ((uint32*)data)[1],
|
B_PRIx32 ", %#" B_PRIx32 "\n", reply.size,
|
||||||
((uint32*)data)[2], ((uint32*)data)[3]);
|
((uint32*)data)[0], ((uint32*)data)[1], ((uint32*)data)[2],
|
||||||
|
((uint32*)data)[3]);
|
||||||
|
|
||||||
rv = (*_web)->Unflatten(reply.code, data, reply.size);
|
rv = (*_web)->Unflatten(reply.code, data, reply.size);
|
||||||
}
|
}
|
||||||
@@ -2250,8 +2275,8 @@ BMediaRoster::GetParameterWebFor(const media_node& node, BParameterWeb** _web)
|
|||||||
// parameter web data was too large
|
// parameter web data was too large
|
||||||
// loop and try a larger size
|
// loop and try a larger size
|
||||||
}
|
}
|
||||||
ERROR("BMediaRoster::GetParameterWebFor node %ld has no parameter web "
|
ERROR("BMediaRoster::GetParameterWebFor node %" B_PRId32 " has no "
|
||||||
"larger than %ld\n", node.node, size);
|
"parameter web larger than %" B_PRId32 "\n", node.node, size);
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2359,8 +2384,8 @@ BMediaRosterEx::InstantiateDormantNode(media_addon_id addonID, int32 flavorID,
|
|||||||
// media_addon_server context) the team-id of the team that
|
// media_addon_server context) the team-id of the team that
|
||||||
// requested the instantiation.
|
// requested the instantiation.
|
||||||
|
|
||||||
TRACE("BMediaRosterEx::InstantiateDormantNode: addonID %ld, flavorID "
|
TRACE("BMediaRosterEx::InstantiateDormantNode: addonID %" B_PRId32
|
||||||
"%ld\n", addonID, flavorID);
|
", flavorID %" B_PRId32 "\n", addonID, flavorID);
|
||||||
|
|
||||||
// Get flavor_info from the server
|
// Get flavor_info from the server
|
||||||
dormant_flavor_info info;
|
dormant_flavor_info info;
|
||||||
@@ -2368,8 +2393,8 @@ BMediaRosterEx::InstantiateDormantNode(media_addon_id addonID, int32 flavorID,
|
|||||||
rv = GetDormantFlavorInfo(addonID, flavorID, &info);
|
rv = GetDormantFlavorInfo(addonID, flavorID, &info);
|
||||||
if (rv != B_OK) {
|
if (rv != B_OK) {
|
||||||
ERROR("BMediaRosterEx::InstantiateDormantNode error: failed to get "
|
ERROR("BMediaRosterEx::InstantiateDormantNode error: failed to get "
|
||||||
"dormant_flavor_info for addon-id %ld, flavor-id %ld\n", addonID,
|
"dormant_flavor_info for addon-id %" B_PRId32 ", flavor-id %"
|
||||||
flavorID);
|
B_PRId32 "\n", addonID, flavorID);
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2388,7 +2413,8 @@ BMediaRosterEx::InstantiateDormantNode(media_addon_id addonID, int32 flavorID,
|
|||||||
rv = IncrementAddonFlavorInstancesCount(addonID, flavorID);
|
rv = IncrementAddonFlavorInstancesCount(addonID, flavorID);
|
||||||
if (rv != B_OK) {
|
if (rv != B_OK) {
|
||||||
ERROR("BMediaRosterEx::InstantiateDormantNode error: can't create "
|
ERROR("BMediaRosterEx::InstantiateDormantNode error: can't create "
|
||||||
"more nodes for addon-id %ld, flavor-id %ld\n", addonID, flavorID);
|
"more nodes for addon-id %" B_PRId32 ", flavor-id %" B_PRId32 "\n",
|
||||||
|
addonID, flavorID);
|
||||||
// Put the addon back into the pool
|
// Put the addon back into the pool
|
||||||
gDormantNodeManager->PutAddOn(addonID);
|
gDormantNodeManager->PutAddOn(addonID);
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
@@ -2398,8 +2424,8 @@ BMediaRosterEx::InstantiateDormantNode(media_addon_id addonID, int32 flavorID,
|
|||||||
rv = LoadNodeConfiguration(addonID, flavorID, &config);
|
rv = LoadNodeConfiguration(addonID, flavorID, &config);
|
||||||
if (rv != B_OK) {
|
if (rv != B_OK) {
|
||||||
ERROR("BMediaRosterEx::InstantiateDormantNode: couldn't load "
|
ERROR("BMediaRosterEx::InstantiateDormantNode: couldn't load "
|
||||||
"configuration for addon-id %ld, flavor-id %ld\n", addonID,
|
"configuration for addon-id %" B_PRId32 ", flavor-id %" B_PRId32
|
||||||
flavorID);
|
"\n", addonID, flavorID);
|
||||||
// do not return, this is a minor problem, not a reason to fail
|
// do not return, this is a minor problem, not a reason to fail
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2441,13 +2467,15 @@ BMediaRosterEx::InstantiateDormantNode(media_addon_id addonID, int32 flavorID,
|
|||||||
if (creator != -1) {
|
if (creator != -1) {
|
||||||
// send a message to the server to assign team "creator" as creator
|
// send a message to the server to assign team "creator" as creator
|
||||||
// of node "node->ID()"
|
// of node "node->ID()"
|
||||||
printf("!!! BMediaRosterEx::InstantiateDormantNode assigning team "
|
printf("!!! BMediaRosterEx::InstantiateDormantNode assigning team %"
|
||||||
"%ld as creator of node %ld\n", creator, node->ID());
|
B_PRId32 " as creator of node %" B_PRId32 "\n", creator,
|
||||||
|
node->ID());
|
||||||
|
|
||||||
rv = MediaRosterEx(this)->SetNodeCreator(node->ID(), creator);
|
rv = MediaRosterEx(this)->SetNodeCreator(node->ID(), creator);
|
||||||
if (rv != B_OK) {
|
if (rv != B_OK) {
|
||||||
ERROR("BMediaRosterEx::InstantiateDormantNode failed to assign "
|
ERROR("BMediaRosterEx::InstantiateDormantNode failed to assign "
|
||||||
"team %ld as creator of node %ld\n", creator, node->ID());
|
"team %" B_PRId32 " as creator of node %" B_PRId32 "\n",
|
||||||
|
creator, node->ID());
|
||||||
// do not return, this is a minor problem, not a reason to fail
|
// do not return, this is a minor problem, not a reason to fail
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2458,9 +2486,10 @@ BMediaRosterEx::InstantiateDormantNode(media_addon_id addonID, int32 flavorID,
|
|||||||
|
|
||||||
*_node = node->Node();
|
*_node = node->Node();
|
||||||
|
|
||||||
TRACE("BMediaRosterEx::InstantiateDormantNode: addon-id %ld, flavor_id "
|
TRACE("BMediaRosterEx::InstantiateDormantNode: addon-id %" B_PRId32
|
||||||
"%ld instanciated as node %ld, port %ld in team %ld\n", addonID,
|
", flavor_id %" B_PRId32 " instanciated as node %" B_PRId32 ", port %"
|
||||||
flavorID, _node->node, _node->port, BPrivate::current_team());
|
B_PRId32 " in team %" B_PRId32 "\n", addonID, flavorID, _node->node,
|
||||||
|
_node->port, BPrivate::current_team());
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
@@ -2474,13 +2503,14 @@ BMediaRoster::InstantiateDormantNode(const dormant_node_info& info,
|
|||||||
if (_node == NULL)
|
if (_node == NULL)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
if (info.addon <= B_OK) {
|
if (info.addon <= B_OK) {
|
||||||
ERROR("BMediaRoster::InstantiateDormantNode error: addon-id %ld "
|
ERROR("BMediaRoster::InstantiateDormantNode error: addon-id %" B_PRId32
|
||||||
" invalid.\n", info.addon);
|
" invalid.\n", info.addon);
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("BMediaRoster::InstantiateDormantNode: addon-id %ld, flavor_id "
|
printf("BMediaRoster::InstantiateDormantNode: addon-id %" B_PRId32
|
||||||
"%ld, flags 0x%lX\n", info.addon, info.flavor_id, flags);
|
", flavor_id %" B_PRId32 ", flags 0x%" B_PRIx32 "\n", info.addon,
|
||||||
|
info.flavor_id, flags);
|
||||||
|
|
||||||
// Get flavor_info from the server
|
// Get flavor_info from the server
|
||||||
// TODO: this is a little overhead, as we get the full blown
|
// TODO: this is a little overhead, as we get the full blown
|
||||||
@@ -2492,8 +2522,8 @@ BMediaRoster::InstantiateDormantNode(const dormant_node_info& info,
|
|||||||
&flavorInfo);
|
&flavorInfo);
|
||||||
if (rv != B_OK) {
|
if (rv != B_OK) {
|
||||||
ERROR("BMediaRoster::InstantiateDormantNode: failed to get "
|
ERROR("BMediaRoster::InstantiateDormantNode: failed to get "
|
||||||
"dormant_flavor_info for addon-id %ld, flavor-id %ld\n",
|
"dormant_flavor_info for addon-id %" B_PRId32 ", flavor-id %"
|
||||||
info.addon, info.flavor_id);
|
B_PRId32 "\n", info.addon, info.flavor_id);
|
||||||
return B_NAME_NOT_FOUND;
|
return B_NAME_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2501,9 +2531,10 @@ BMediaRoster::InstantiateDormantNode(const dormant_node_info& info,
|
|||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
printf("BMediaRoster::InstantiateDormantNode: name \"%s\", info \"%s\", "
|
printf("BMediaRoster::InstantiateDormantNode: name \"%s\", info \"%s\", "
|
||||||
"flavor_flags 0x%lX, internal_id %ld, possible_count %ld\n",
|
"flavor_flags 0x%" B_PRIx32 ", internal_id %" B_PRId32
|
||||||
flavorInfo.name, flavorInfo.info, flavorInfo.flavor_flags,
|
", possible_count %" B_PRId32 "\n", flavorInfo.name, flavorInfo.info,
|
||||||
flavorInfo.internal_id, flavorInfo.possible_count);
|
flavorInfo.flavor_flags, flavorInfo.internal_id,
|
||||||
|
flavorInfo.possible_count);
|
||||||
|
|
||||||
if ((flags & B_FLAVOR_IS_LOCAL) != 0) {
|
if ((flags & B_FLAVOR_IS_LOCAL) != 0) {
|
||||||
printf("BMediaRoster::InstantiateDormantNode: caller requested "
|
printf("BMediaRoster::InstantiateDormantNode: caller requested "
|
||||||
@@ -2702,8 +2733,8 @@ BMediaRoster::GetInitialLatencyFor(const media_node& producer,
|
|||||||
if (_flags != NULL)
|
if (_flags != NULL)
|
||||||
*_flags = reply.flags;
|
*_flags = reply.flags;
|
||||||
|
|
||||||
TRACE("BMediaRoster::GetInitialLatencyFor producer %ld has maximum "
|
TRACE("BMediaRoster::GetInitialLatencyFor producer %" B_PRId32 " has "
|
||||||
"initial latency %Ld\n", producer.node, *_latency);
|
"maximum initial latency %" B_PRId64 "\n", producer.node, *_latency);
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2730,8 +2761,8 @@ BMediaRoster::GetStartLatencyFor(const media_node& timeSource,
|
|||||||
|
|
||||||
*_latency = reply.start_latency;
|
*_latency = reply.start_latency;
|
||||||
|
|
||||||
TRACE("BMediaRoster::GetStartLatencyFor timesource %ld has maximum "
|
TRACE("BMediaRoster::GetStartLatencyFor timesource %" B_PRId32 " has "
|
||||||
"initial latency %Ld\n", timeSource.node, *_latency);
|
"maximum initial latency %" B_PRId64 "\n", timeSource.node, *_latency);
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2838,7 +2869,8 @@ BMediaRoster::SniffRef(const entry_ref& file, uint64 requireNodeKinds,
|
|||||||
{
|
{
|
||||||
CALLED();
|
CALLED();
|
||||||
|
|
||||||
TRACE("BMediaRoster::SniffRef looking for a node to handle %s : %Ld\n",file.name, requireNodeKinds);
|
TRACE("BMediaRoster::SniffRef looking for a node to handle %s: 0x%" B_PRIx64
|
||||||
|
"\n", file.name, requireNodeKinds);
|
||||||
|
|
||||||
if (_node == NULL)
|
if (_node == NULL)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
@@ -2873,8 +2905,10 @@ BMediaRoster::SniffRef(const entry_ref& file, uint64 requireNodeKinds,
|
|||||||
if (highestCapability != -1) {
|
if (highestCapability != -1) {
|
||||||
*_node = nodes[highestCapability];
|
*_node = nodes[highestCapability];
|
||||||
|
|
||||||
TRACE("BMediaRoster::SniffRef: found a node %s addon-id %ld, flavor_id %ld\n",
|
TRACE("BMediaRoster::SniffRef: found a node %s addon-id %" B_PRId32
|
||||||
nodes[highestCapability].name, nodes[highestCapability].addon, nodes[highestCapability].flavor_id);
|
", flavor_id %" B_PRId32 "\n",
|
||||||
|
nodes[highestCapability].name, nodes[highestCapability].addon,
|
||||||
|
nodes[highestCapability].flavor_id);
|
||||||
|
|
||||||
if (mimeType != NULL) {
|
if (mimeType != NULL) {
|
||||||
//*mimeType = aMimeType; -- need a copy constructor
|
//*mimeType = aMimeType; -- need a copy constructor
|
||||||
@@ -3013,7 +3047,7 @@ BMediaRoster::NodeIDFor(port_id port)
|
|||||||
rv = QueryServer(SERVER_NODE_ID_FOR, &request, sizeof(request), &reply,
|
rv = QueryServer(SERVER_NODE_ID_FOR, &request, sizeof(request), &reply,
|
||||||
sizeof(reply));
|
sizeof(reply));
|
||||||
if (rv != B_OK) {
|
if (rv != B_OK) {
|
||||||
ERROR("BMediaRoster::NodeIDFor: failed (error %#lx)\n", rv);
|
ERROR("BMediaRoster::NodeIDFor: failed (error %#" B_PRIx32 ")\n", rv);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3101,8 +3135,8 @@ BMediaRoster::AudioBufferSizeFor(int32 channelCount, uint32 sampleFormat,
|
|||||||
bufferSize = (sampleFormat & 0xf) * channelCount
|
bufferSize = (sampleFormat & 0xf) * channelCount
|
||||||
* (ssize_t)((frameRate * bufferDuration) / 1000000.0);
|
* (ssize_t)((frameRate * bufferDuration) / 1000000.0);
|
||||||
|
|
||||||
printf("Suggested buffer duration %Ld, size %ld\n", bufferDuration,
|
printf("Suggested buffer duration %" B_PRId64 ", size %" B_PRIdSSIZE "\n",
|
||||||
bufferSize);
|
bufferDuration, bufferSize);
|
||||||
|
|
||||||
return bufferSize;
|
return bufferSize;
|
||||||
}
|
}
|
||||||
@@ -3148,10 +3182,12 @@ BMediaRoster::MessageReceived(BMessage* message)
|
|||||||
BMediaNode *node;
|
BMediaNode *node;
|
||||||
message->FindPointer("node", reinterpret_cast<void **>(&node));
|
message->FindPointer("node", reinterpret_cast<void **>(&node));
|
||||||
|
|
||||||
TRACE("BMediaRoster::MessageReceived NODE_FINAL_RELEASE saving node %ld configuration\n", node->ID());
|
TRACE("BMediaRoster::MessageReceived NODE_FINAL_RELEASE saving "
|
||||||
|
"node %" B_PRId32 " configuration\n", node->ID());
|
||||||
MediaRosterEx(BMediaRoster::Roster())->SaveNodeConfiguration(node);
|
MediaRosterEx(BMediaRoster::Roster())->SaveNodeConfiguration(node);
|
||||||
|
|
||||||
TRACE("BMediaRoster::MessageReceived NODE_FINAL_RELEASE releasing node %ld\n", node->ID());
|
TRACE("BMediaRoster::MessageReceived NODE_FINAL_RELEASE releasing "
|
||||||
|
"node %" B_PRId32 "\n", node->ID());
|
||||||
node->DeleteHook(node); // we don't call Release(), see above!
|
node->DeleteHook(node); // we don't call Release(), see above!
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -340,8 +340,8 @@ BMediaTrack::ReadFrames(void* buffer, int64* _frameCount,
|
|||||||
//fflush(stdout);
|
//fflush(stdout);
|
||||||
//}
|
//}
|
||||||
} else {
|
} else {
|
||||||
ERROR("BMediaTrack::ReadFrames: decoder returned error 0x%08lx (%s)\n",
|
ERROR("BMediaTrack::ReadFrames: decoder returned error %#" B_PRIx32
|
||||||
result, strerror(result));
|
" (%s)\n", result, strerror(result));
|
||||||
*_frameCount = 0;
|
*_frameCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ MediaWriter::CreateEncoder(Encoder** _encoder,
|
|||||||
if (!fStreamInfos.Insert(info)) {
|
if (!fStreamInfos.Insert(info)) {
|
||||||
gPluginManager.DestroyEncoder(encoder);
|
gPluginManager.DestroyEncoder(encoder);
|
||||||
ERROR("MediaWriter::CreateEncoder can't create StreamInfo "
|
ERROR("MediaWriter::CreateEncoder can't create StreamInfo "
|
||||||
"for stream %ld\n", streamIndex);
|
"for stream %" B_PRId32 "\n", streamIndex);
|
||||||
return B_NO_MEMORY;
|
return B_NO_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ MediaWriter::CreateEncoder(Encoder** _encoder,
|
|||||||
if (chunkWriter == NULL) {
|
if (chunkWriter == NULL) {
|
||||||
gPluginManager.DestroyEncoder(encoder);
|
gPluginManager.DestroyEncoder(encoder);
|
||||||
ERROR("MediaWriter::CreateEncoder can't create ChunkWriter "
|
ERROR("MediaWriter::CreateEncoder can't create ChunkWriter "
|
||||||
"for stream %ld\n", streamIndex);
|
"for stream %" B_PRId32 "\n", streamIndex);
|
||||||
return B_NO_MEMORY;
|
return B_NO_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2009, Haiku. All Rights Reserved.
|
* Copyright 2002-2012, Haiku. All Rights Reserved.
|
||||||
* This file may be used under the terms of the MIT License.
|
* This file may be used under the terms of the MIT License.
|
||||||
*
|
*
|
||||||
* Author: Zousar Shaker
|
* Author: Zousar Shaker
|
||||||
@@ -7,11 +7,13 @@
|
|||||||
* Marcus Overhagen
|
* Marcus Overhagen
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*! Implements the following classes:
|
/*! Implements the following classes:
|
||||||
BParameterWeb, BParameterGroup, BParameter, BNullParameter,
|
BParameterWeb, BParameterGroup, BParameter, BNullParameter,
|
||||||
BContinuousParameter, BDiscreteParameter
|
BContinuousParameter, BDiscreteParameter
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <ParameterWeb.h>
|
#include <ParameterWeb.h>
|
||||||
|
|
||||||
#include <new>
|
#include <new>
|
||||||
@@ -281,6 +283,18 @@ swap32(Type value, bool doSwap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type> Type
|
||||||
|
swap64(Type value, bool doSwap)
|
||||||
|
{
|
||||||
|
STATIC_ASSERT(sizeof(Type) == 8);
|
||||||
|
|
||||||
|
if (doSwap)
|
||||||
|
return (Type)B_SWAP_INT64((int64)value);
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<class Type> Type
|
template<class Type> Type
|
||||||
read_from_buffer_swap32(const void **_buffer, bool doSwap)
|
read_from_buffer_swap32(const void **_buffer, bool doSwap)
|
||||||
{
|
{
|
||||||
@@ -288,6 +302,19 @@ read_from_buffer_swap32(const void **_buffer, bool doSwap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type> Type
|
||||||
|
read_pointer_from_buffer_swap(const void **_buffer, bool doSwap)
|
||||||
|
{
|
||||||
|
#if B_HAIKU_32_BIT
|
||||||
|
return swap32<Type>(read_from_buffer<Type>(_buffer), doSwap);
|
||||||
|
#elif B_HAIKU_64_BIT
|
||||||
|
return swap64<Type>(read_from_buffer<Type>(_buffer), doSwap);
|
||||||
|
#else
|
||||||
|
# error Interesting
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static inline ssize_t
|
static inline ssize_t
|
||||||
size_left(ssize_t size, const void *bufferStart, const void *buffer)
|
size_left(ssize_t size, const void *bufferStart, const void *buffer)
|
||||||
{
|
{
|
||||||
@@ -568,8 +595,8 @@ BParameterWeb::Unflatten(type_code code, const void* buffer, ssize_t size)
|
|||||||
// information - but it doesn't seem to have another purpose
|
// information - but it doesn't seem to have another purpose
|
||||||
int32 version = read_from_buffer_swap32<int32>(&buffer, isSwapped);
|
int32 version = read_from_buffer_swap32<int32>(&buffer, isSwapped);
|
||||||
if (version != kCurrentParameterWebVersion) {
|
if (version != kCurrentParameterWebVersion) {
|
||||||
ERROR("BParameterWeb::Unflatten(): wrong version %ld (%lx)?!\n",
|
ERROR("BParameterWeb::Unflatten(): wrong version %" B_PRId32 " (%"
|
||||||
version, version);
|
B_PRIx32 ")?!\n", version, version);
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1052,8 +1079,8 @@ BParameterGroup::Unflatten(type_code code, const void* buffer, ssize_t size)
|
|||||||
if (size_left(size, bufferStart, buffer) < 12)
|
if (size_left(size, bufferStart, buffer) < 12)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
BParameter* oldPointer = read_from_buffer_swap32<BParameter*>(&buffer,
|
BParameter* oldPointer = read_pointer_from_buffer_swap<BParameter*>(
|
||||||
isSwapped);
|
&buffer, isSwapped);
|
||||||
BParameter::media_parameter_type mediaType
|
BParameter::media_parameter_type mediaType
|
||||||
= read_from_buffer_swap32<BParameter::media_parameter_type>(&buffer,
|
= read_from_buffer_swap32<BParameter::media_parameter_type>(&buffer,
|
||||||
isSwapped);
|
isSwapped);
|
||||||
@@ -1101,8 +1128,8 @@ BParameterGroup::Unflatten(type_code code, const void* buffer, ssize_t size)
|
|||||||
if (size_left(size, bufferStart, buffer) < 12)
|
if (size_left(size, bufferStart, buffer) < 12)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
BParameterGroup* oldPointer
|
BParameterGroup* oldPointer = read_pointer_from_buffer_swap<
|
||||||
= read_from_buffer_swap32<BParameterGroup*>(&buffer, isSwapped);
|
BParameterGroup*>(&buffer, isSwapped);
|
||||||
type_code type = read_from_buffer_swap32<type_code>(&buffer, isSwapped);
|
type_code type = read_from_buffer_swap32<type_code>(&buffer, isSwapped);
|
||||||
|
|
||||||
ssize_t groupSize
|
ssize_t groupSize
|
||||||
@@ -1161,7 +1188,8 @@ BParameterGroup::MakeControl(int32 type)
|
|||||||
return new BTextParameter(-1, B_MEDIA_NO_TYPE, NULL, NULL, NULL, 0);
|
return new BTextParameter(-1, B_MEDIA_NO_TYPE, NULL, NULL, NULL, 0);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
ERROR("BParameterGroup::MakeControl unknown type %ld\n", type);
|
ERROR("BParameterGroup::MakeControl unknown type %" B_PRId32 "\n",
|
||||||
|
type);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1656,8 +1684,8 @@ BParameter::Unflatten(type_code code, const void* buffer, ssize_t size)
|
|||||||
|
|
||||||
fInputs->MakeEmpty();
|
fInputs->MakeEmpty();
|
||||||
for (int32 i = 0; i < count; i++) {
|
for (int32 i = 0; i < count; i++) {
|
||||||
fInputs->AddItem(read_from_buffer_swap32<BParameter * const>(&buffer,
|
fInputs->AddItem(read_pointer_from_buffer_swap<BParameter * const>(
|
||||||
fSwapDetected));
|
&buffer, fSwapDetected));
|
||||||
}
|
}
|
||||||
|
|
||||||
// read the list of outputs
|
// read the list of outputs
|
||||||
@@ -1666,8 +1694,8 @@ BParameter::Unflatten(type_code code, const void* buffer, ssize_t size)
|
|||||||
|
|
||||||
fOutputs->MakeEmpty();
|
fOutputs->MakeEmpty();
|
||||||
for (int32 i = 0; i < count; i++) {
|
for (int32 i = 0; i < count; i++) {
|
||||||
fOutputs->AddItem(read_from_buffer_swap32<BParameter * const>(&buffer,
|
fOutputs->AddItem(read_pointer_from_buffer_swap<BParameter * const>(
|
||||||
fSwapDetected));
|
&buffer, fSwapDetected));
|
||||||
}
|
}
|
||||||
|
|
||||||
fMediaType = read_from_buffer_swap32<media_type>(&buffer, fSwapDetected);
|
fMediaType = read_from_buffer_swap32<media_type>(&buffer, fSwapDetected);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2009, Axel Dörfler, axeld@pinc-software.de.
|
* Copyright 2009-2012, Axel Dörfler, axeld@pinc-software.de.
|
||||||
* Copyright 2002, Marcus Overhagen. All Rights Reserved.
|
* Copyright 2002, Marcus Overhagen. All Rights Reserved.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
@@ -80,7 +80,7 @@ SharedBufferList::Get()
|
|||||||
sArea = clone_area("shared buffer list clone", (void**)&sList,
|
sArea = clone_area("shared buffer list clone", (void**)&sList,
|
||||||
B_ANY_ADDRESS, B_READ_AREA | B_WRITE_AREA, areaReply.area);
|
B_ANY_ADDRESS, B_READ_AREA | B_WRITE_AREA, areaReply.area);
|
||||||
if (sArea < 0) {
|
if (sArea < 0) {
|
||||||
ERROR("SharedBufferList::Get() clone area %ld: %s\n",
|
ERROR("SharedBufferList::Get() clone area %" B_PRId32 ": %s\n",
|
||||||
areaReply.area, strerror(sArea));
|
areaReply.area, strerror(sArea));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -303,8 +303,8 @@ SharedBufferList::RecycleBuffer(BBuffer* buffer)
|
|||||||
if (fInfos[i].id == id) {
|
if (fInfos[i].id == id) {
|
||||||
reclaimedCount++;
|
reclaimedCount++;
|
||||||
if (fInfos[i].reclaimed) {
|
if (fInfos[i].reclaimed) {
|
||||||
ERROR("SharedBufferList::RecycleBuffer, BBuffer %p, id = %ld "
|
ERROR("SharedBufferList::RecycleBuffer, BBuffer %p, id = %"
|
||||||
"already reclaimed\n", buffer, id);
|
B_PRId32 " already reclaimed\n", buffer, id);
|
||||||
DEBUG_ONLY(debugger("buffer already reclaimed"));
|
DEBUG_ONLY(debugger("buffer already reclaimed"));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -317,8 +317,8 @@ SharedBufferList::RecycleBuffer(BBuffer* buffer)
|
|||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
if (reclaimedCount == 0) {
|
if (reclaimedCount == 0) {
|
||||||
ERROR("shared_buffer_list::RecycleBuffer, BBuffer %p, id = %ld NOT "
|
ERROR("shared_buffer_list::RecycleBuffer, BBuffer %p, id = %" B_PRId32
|
||||||
"reclaimed\n", buffer, id);
|
" NOT reclaimed\n", buffer, id);
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -397,7 +397,7 @@ SharedBufferList::_RequestBufferInOtherGroups(sem_id groupReclaimSem,
|
|||||||
|
|
||||||
if (fInfos[i].reclaimed == false) {
|
if (fInfos[i].reclaimed == false) {
|
||||||
ERROR("SharedBufferList:: RequestBufferInOtherGroups BBuffer "
|
ERROR("SharedBufferList:: RequestBufferInOtherGroups BBuffer "
|
||||||
"%p, id = %ld not reclaimed while requesting\n",
|
"%p, id = %" B_PRId32 " not reclaimed while requesting\n",
|
||||||
fInfos[i].buffer, id);
|
fInfos[i].buffer, id);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -156,7 +156,8 @@ SoundConsumer::SetHooks(SoundProcessFunc recordFunc, SoundNotifyFunc notifyFunc,
|
|||||||
// Wait for acknowledge from the service thread.
|
// Wait for acknowledge from the service thread.
|
||||||
err = read_port_etc(cmd.reply, &code, 0, 0, B_TIMEOUT, 6000000LL);
|
err = read_port_etc(cmd.reply, &code, 0, 0, B_TIMEOUT, 6000000LL);
|
||||||
if (err > 0) err = 0;
|
if (err > 0) err = 0;
|
||||||
NODE(stderr, "SoundConsumer::SetHooks read reply: %#010lx\n", err);
|
NODE(stderr, "SoundConsumer::SetHooks read reply: %#" B_PRIx32
|
||||||
|
"\n", err);
|
||||||
}
|
}
|
||||||
// Clean up.
|
// Clean up.
|
||||||
delete_port(cmd.reply);
|
delete_port(cmd.reply);
|
||||||
@@ -591,8 +592,8 @@ SoundConsumer::ServiceThread()
|
|||||||
int32 code = 0;
|
int32 code = 0;
|
||||||
status_t err = read_port_etc(m_port, &code, msg, B_MEDIA_MESSAGE_SIZE,
|
status_t err = read_port_etc(m_port, &code, msg, B_MEDIA_MESSAGE_SIZE,
|
||||||
B_TIMEOUT, timeout);
|
B_TIMEOUT, timeout);
|
||||||
MESSAGE(stderr, "SoundConsumer::ServiceThread() port %ld message "
|
MESSAGE(stderr, "SoundConsumer::ServiceThread() port %" B_PRId32
|
||||||
"%#010lx\n", m_port, code);
|
" message %#" B_PRIx32 "\n", m_port, code);
|
||||||
// If we received a message, err will be the size of the message
|
// If we received a message, err will be the size of the message
|
||||||
// (including 0).
|
// (including 0).
|
||||||
if (err >= B_OK) {
|
if (err >= B_OK) {
|
||||||
@@ -625,7 +626,7 @@ SoundConsumer::ServiceThread()
|
|||||||
Notify(B_OP_TIMED_OUT, timeout);
|
Notify(B_OP_TIMED_OUT, timeout);
|
||||||
} else {
|
} else {
|
||||||
// Other errors are bad.
|
// Other errors are bad.
|
||||||
MESSAGE(stderr, "SoundConsumer: error %#010lx\n", err);
|
MESSAGE(stderr, "SoundConsumer: error %#" B_PRIx32 "\n", err);
|
||||||
bad++;
|
bad++;
|
||||||
// If we receive three bad reads with no good messages inbetween,
|
// If we receive three bad reads with no good messages inbetween,
|
||||||
// things are probably not going to improve (like the port
|
// things are probably not going to improve (like the port
|
||||||
|
|||||||
@@ -464,8 +464,10 @@ SoundPlayNode::Disconnect(const media_source& what,
|
|||||||
delete fBufferGroup;
|
delete fBufferGroup;
|
||||||
fBufferGroup = NULL;
|
fBufferGroup = NULL;
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "\tDisconnect() called with wrong source/destination (%ld/%ld), ours is (%ld/%ld)\n",
|
fprintf(stderr, "\tDisconnect() called with wrong source/destination "
|
||||||
what.id, where.id, fOutput.source.id, fOutput.destination.id);
|
"(%" B_PRId32 "/%" B_PRId32 "), ours is (%" B_PRId32 "/%" B_PRId32
|
||||||
|
")\n", what.id, where.id, fOutput.source.id,
|
||||||
|
fOutput.destination.id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -476,8 +478,8 @@ SoundPlayNode::LateNoticeReceived(const media_source& what, bigtime_t howMuch,
|
|||||||
{
|
{
|
||||||
CALLED();
|
CALLED();
|
||||||
|
|
||||||
TRACE("SoundPlayNode::LateNoticeReceived, %Ld too late at %Ld\n", howMuch,
|
TRACE("SoundPlayNode::LateNoticeReceived, %" B_PRId64 " too late at %"
|
||||||
performanceTime);
|
B_PRId64 "\n", howMuch, performanceTime);
|
||||||
|
|
||||||
// is this our output?
|
// is this our output?
|
||||||
if (what != fOutput.source) {
|
if (what != fOutput.source) {
|
||||||
@@ -498,7 +500,8 @@ SoundPlayNode::LateNoticeReceived(const media_source& what, bigtime_t howMuch,
|
|||||||
fInternalLatency = 30000;
|
fInternalLatency = 30000;
|
||||||
|
|
||||||
SetEventLatency(fLatency + fInternalLatency);
|
SetEventLatency(fLatency + fInternalLatency);
|
||||||
TRACE("SoundPlayNode::LateNoticeReceived: increasing latency to %Ld\n", fLatency + fInternalLatency);
|
TRACE("SoundPlayNode::LateNoticeReceived: increasing latency to %"
|
||||||
|
B_PRId64 "\n", fLatency + fInternalLatency);
|
||||||
} else {
|
} else {
|
||||||
// The other run modes dictate various strategies for sacrificing data quality
|
// The other run modes dictate various strategies for sacrificing data quality
|
||||||
// in the interests of timely data delivery. The way *we* do this is to skip
|
// in the interests of timely data delivery. The way *we* do this is to skip
|
||||||
@@ -554,7 +557,8 @@ SoundPlayNode::LatencyChanged(const media_source& source,
|
|||||||
{
|
{
|
||||||
CALLED();
|
CALLED();
|
||||||
|
|
||||||
TRACE("SoundPlayNode::LatencyChanged: new_latency %Ld\n", newLatency);
|
TRACE("SoundPlayNode::LatencyChanged: new_latency %" B_PRId64 "\n",
|
||||||
|
newLatency);
|
||||||
|
|
||||||
// something downstream changed latency, so we need to start producing
|
// something downstream changed latency, so we need to start producing
|
||||||
// buffers earlier (or later) than we were previously. Make sure that the
|
// buffers earlier (or later) than we were previously. Make sure that the
|
||||||
@@ -604,7 +608,7 @@ SoundPlayNode::HandleEvent(const media_timed_event* event, bigtime_t lateness,
|
|||||||
HandleParameter(event,lateness,realTimeEvent);
|
HandleParameter(event,lateness,realTimeEvent);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
fprintf(stderr," unknown event type: %li\n", event->type);
|
fprintf(stderr," unknown event type: %" B_PRId32 "\n", event->type);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -635,7 +639,7 @@ SoundPlayNode::SendNewBuffer(const media_timed_event* event,
|
|||||||
|
|
||||||
if (lateness > (BufferDuration() / 3) ) {
|
if (lateness > (BufferDuration() / 3) ) {
|
||||||
printf("SoundPlayNode::SendNewBuffer, event scheduled much too late, "
|
printf("SoundPlayNode::SendNewBuffer, event scheduled much too late, "
|
||||||
"lateness is %Ld\n", lateness);
|
"lateness is %" B_PRId64 "\n", lateness);
|
||||||
}
|
}
|
||||||
|
|
||||||
// skip buffer creation if output not enabled
|
// skip buffer creation if output not enabled
|
||||||
@@ -698,8 +702,8 @@ status_t
|
|||||||
SoundPlayNode::HandleDataStatus(const media_timed_event* event,
|
SoundPlayNode::HandleDataStatus(const media_timed_event* event,
|
||||||
bigtime_t lateness, bool realTimeEvent)
|
bigtime_t lateness, bool realTimeEvent)
|
||||||
{
|
{
|
||||||
TRACE("SoundPlayNode::HandleDataStatus status: %li, lateness: %Li\n",
|
TRACE("SoundPlayNode::HandleDataStatus status: %" B_PRId32 ", lateness: %"
|
||||||
event->data, lateness);
|
B_PRId64 "\n", event->data, lateness);
|
||||||
|
|
||||||
switch (event->data) {
|
switch (event->data) {
|
||||||
case B_DATA_NOT_AVAILABLE:
|
case B_DATA_NOT_AVAILABLE:
|
||||||
@@ -746,8 +750,8 @@ SoundPlayNode::HandleSeek(const media_timed_event* event, bigtime_t lateness,
|
|||||||
bool realTimeEvent)
|
bool realTimeEvent)
|
||||||
{
|
{
|
||||||
CALLED();
|
CALLED();
|
||||||
TRACE("SoundPlayNode::HandleSeek(t=%lld, d=%li, bd=%lld)\n",
|
TRACE("SoundPlayNode::HandleSeek(t=%" B_PRId64 ", d=%" B_PRId32 ", bd=%"
|
||||||
event->event_time, event->data, event->bigdata);
|
B_PRId64 ")\n", event->event_time, event->data, event->bigdata);
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -792,14 +796,15 @@ SoundPlayNode::AllocateBuffers()
|
|||||||
size_t size = fOutput.format.u.raw_audio.buffer_size;
|
size_t size = fOutput.format.u.raw_audio.buffer_size;
|
||||||
int32 count = int32(fLatency / BufferDuration() + 1 + 1);
|
int32 count = int32(fLatency / BufferDuration() + 1 + 1);
|
||||||
|
|
||||||
TRACE("SoundPlayNode::AllocateBuffers: latency = %Ld, buffer duration "
|
TRACE("SoundPlayNode::AllocateBuffers: latency = %" B_PRId64 ", buffer "
|
||||||
"= %Ld, count %ld\n", fLatency, BufferDuration(), count);
|
"duration = %" B_PRId64 ", count %" B_PRId32 "\n", fLatency,
|
||||||
|
BufferDuration(), count);
|
||||||
|
|
||||||
if (count < 3)
|
if (count < 3)
|
||||||
count = 3;
|
count = 3;
|
||||||
|
|
||||||
TRACE("SoundPlayNode::AllocateBuffers: creating group of %ld buffers, "
|
TRACE("SoundPlayNode::AllocateBuffers: creating group of %" B_PRId32
|
||||||
"size = %lu\n", count, size);
|
" buffers, size = %" B_PRIuSIZE "\n", count, size);
|
||||||
|
|
||||||
fBufferGroup = new BBufferGroup(size, count);
|
fBufferGroup = new BBufferGroup(size, count);
|
||||||
if (fBufferGroup->InitCheck() != B_OK) {
|
if (fBufferGroup->InitCheck() != B_OK) {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user