Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
MilkFreeze

Anmeldungsdatum: 22.04.2011 Beiträge: 116
|
Verfasst am: 05.07.2011, 19:53 Titel: |
|
|
DLL = Dynamic Linked Libary. Das ist unabhänig der Endung, sondern bezeichnet das ein Programm-teil erst zur laufzeit geladen wird. Das meint also auch die .so-files unter linux.
Ja, ich hab das nur in die .draw()-Methoden verschoben und konnte den code so wesentlich schlanker halten (weniger zugriffe auf die Arrays). _________________ Milch ftw  |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 05.07.2011, 20:39 Titel: |
|
|
ja .. leider .. auf linux habe ich das ja auch entdeckt. Wollte damals n app schreiben, das mit eine art "Plugins" arbeitet, und die möglichkeit gibt IO Funktionen an die SO's so übergeben. Und da kamen dann auch diese massiven probleem auf. z.B. grafikpoerationen prozessübergreifend zu nutzen. Das ging manchmal, und machmal nicht. und öffter sehr kurios. komische effekte entstanden da.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
XOR
Anmeldungsdatum: 23.07.2010 Beiträge: 161
|
Verfasst am: 05.07.2011, 21:35 Titel: |
|
|
Zitat: | XOR hat Folgendes geschrieben:
weil mir gerade langweilig war habe ich noch ein kleines beispiel geschriben
Schick! |
Danke.
Zitat: | Vorschlag:
Mach noch eine "MouseOver"-Callback rein, damit die Buttons ihr aussehen ändern können, wenn die Maus darüber wandert. Dazu noch die Fenster in der größe veränderlich und das FakeOS is fast fertig.
Wenn du keine lust hast, kommentier den Code mal bitte etwas, kam ad hoc nicht gut darin zurecht, deswegen hab ich die vorgeschlagenen Anderungen nicht selbst eingebaut lächeln |
Mousover Callback ist nun eingebaut, resize auch und inputboxen.
Ich habe auch angefangen den code zu kommentieren.
Hier koennt ihr den quelltext finden.
zu der sache mit den dll's. wieso multithreading?
wenn ich eine gui mit multithreading mache dann nur wegen den DialogBoxen und dann mache ich dass immer so das man eine function Updatedesktop habe, diese function erstellt einen zweiten thread. und wartet bis dierer beendet ist oder eine DialogBoxen erstellt wurde und sendet dann eine neue. wurde eine DialogBoxen von beendet so erfahrt das ein thread und schreibt das in eine globale variable, ist der thread dann baanedt liesst ma in der function Updatedesktop diese variable aus un wenn sie gesetzt ist laesst man den DialogBoxen thread beenden. man hat so zwar multithreading und DialogBoxen unterstuetzung, bei richtiger anwendung braucht man aber nicht viele mutexe da immer nur ein thread abgearbeitet waehrend die anderen warten. |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 05.07.2011, 21:52 Titel: |
|
|
thread 1. Web-Cam Grab
thread 2. Web-server
thread 3. admin-desktop-app
und schon is das prob vorhanden.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 05.07.2011, 22:04 Titel: |
|
|
XOR, ich habe in deinem Programm (mit -exx compiliert) einen runtime-error - in MouseOverOp glaube ich, bin mir aber nicht mehr sicher. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
MilkFreeze

Anmeldungsdatum: 22.04.2011 Beiträge: 116
|
Verfasst am: 05.07.2011, 22:07 Titel: |
|
|
XOR hat Folgendes geschrieben: | Zitat: | XOR hat Folgendes geschrieben:
weil mir gerade langweilig war habe ich noch ein kleines beispiel geschriben
Schick! |
Danke.
Zitat: | Vorschlag:
Mach noch eine "MouseOver"-Callback rein, damit die Buttons ihr aussehen ändern können, wenn die Maus darüber wandert. Dazu noch die Fenster in der größe veränderlich und das FakeOS is fast fertig.
Wenn du keine lust hast, kommentier den Code mal bitte etwas, kam ad hoc nicht gut darin zurecht, deswegen hab ich die vorgeschlagenen Anderungen nicht selbst eingebaut lächeln |
Mousover Callback ist nun eingebaut, resize auch und inputboxen.
Ich habe auch angefangen den code zu kommentieren.
Hier koennt ihr den quelltext finden.
zu der sache mit den dll's. wieso multithreading?
wenn ich eine gui mit multithreading mache dann nur wegen den DialogBoxen und dann mache ich dass immer so das man eine function Updatedesktop habe, diese function erstellt einen zweiten thread. und wartet bis dierer beendet ist oder eine DialogBoxen erstellt wurde und sendet dann eine neue. wurde eine DialogBoxen von beendet so erfahrt das ein thread und schreibt das in eine globale variable, ist der thread dann baanedt liesst ma in der function Updatedesktop diese variable aus un wenn sie gesetzt ist laesst man den DialogBoxen thread beenden. man hat so zwar multithreading und DialogBoxen unterstuetzung, bei richtiger anwendung braucht man aber nicht viele mutexe da immer nur ein thread abgearbeitet waehrend die anderen warten. |
Wieso dann überhaupt mehrere Threads?
Meine idee war ja: Ich hab ein programm das die Fensterverwaltung und das "scheduling" übernimmt. Und die Anwendungen werden als DLLs dazu geladen, wenn benötigt. Dabei wird der Output der "Programme" über callbacks an den "Fenstermanager" weiter gegeben. Input läuft über Freigebene Funktionen wieder in die DLL.
Um dann aber noch sauber Programme ausführen zu können braucht man entweder threads, oder DLLs die so geschrieben sind, das der Fenstermanager entscheidet wann wie viel ausgeführt wird. _________________ Milch ftw  |
|
Nach oben |
|
 |
XOR
Anmeldungsdatum: 23.07.2010 Beiträge: 161
|
Verfasst am: 05.07.2011, 22:36 Titel: |
|
|
Zitat: | XOR, ich habe in deinem Programm (mit -exx compiliert) einen runtime-error - in MouseOverOp glaube ich, bin mir aber nicht mehr sicher. |
bei mir gibt es auch einen fehler, veraendere ich in dem Button functionen
zu
Code: | G->State = G->State Or 1 |
und
Code: | G->State And= Not(1) |
zu
Code: | G->State = G->State And Not(1) |
gibt es keinen fehler.
wieso denn das????
Wobei in Gadget ist State so
koennte das den fehler verursacht haben? |
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 06.07.2011, 01:35 Titel: |
|
|
Sollte es zwar nicht, könnte es aber. Riecht für mich nach einem Bug im Compiler. Du solltest vielleicht den Fehler isolieren und einen Bugreport bei Sourceforge bzw. im englischen Forum posten. |
|
Nach oben |
|
 |
XOR
Anmeldungsdatum: 23.07.2010 Beiträge: 161
|
Verfasst am: 06.07.2011, 03:19 Titel: |
|
|
Code: | Type CheckBoxenType
CB1 : 1 As Integer
CB2 : 1 As Integer
CB3 : 1 As Integer
End Type
Dim CheckBoxen As CheckBoxenType Ptr
CheckBoxen = Allocate(SizeOf(CheckBoxenType))
CheckBoxen->CB1 And=1
DeAllocate(CheckBoxen)
sleep
|
mit -exx fuehrt zu einem fehler, jedoch
Code: | Type CheckBoxenType
CB1 : 1 As Integer
CB2 : 1 As Integer
CB3 : 1 As Integer
End Type
Dim CheckBoxen As CheckBoxenType Ptr
CheckBoxen = Allocate(SizeOf(CheckBoxenType))
CheckBoxen->CB1 =CheckBoxen->CB1 And 1''<-- an dieser zeile liegts
DeAllocate(CheckBoxen)
sleep
|
nicht.
Hier findet man die verbesserte gui ohne fehler und ein paar neuen gadgets. |
|
Nach oben |
|
 |
MilkFreeze

Anmeldungsdatum: 22.04.2011 Beiträge: 116
|
Verfasst am: 06.07.2011, 11:09 Titel: |
|
|
Hübsch. Aber ich hab einen merklichen Ansprung der CPU-Auslastung. Vielleicht wäre es besser nur neu zu zeichnen wenn sich wirklich was verändert hat? _________________ Milch ftw  |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 06.07.2011, 11:54 Titel: |
|
|
Code: | If mb=1 Then 'Wenn Maustaste gedrückt wird
For i As Integer = 0 To 480
Line(0,i)-(640,i),GFXAddColor(RGB(0,128,255),(i/480-0.5)*50),bf
Next
End If |
Ich bin mir nicht sicher, welche Variable die für die Maustaste ist. Bin mir nicht mal sicher, ob mit diesem Line-Befehl gelöscht wird.
... Ist es normal, dass das ganze 92% CPU-Auslastung hat? |
|
Nach oben |
|
 |
MilkFreeze

Anmeldungsdatum: 22.04.2011 Beiträge: 116
|
Verfasst am: 06.07.2011, 12:07 Titel: |
|
|
Der Code ist leider ziemlich unleserlich, sonst würde ich mich eher trauen da drin rumzupfuschen, um vielleicht etwas performance rauszuholen um meine CPU zu schonen...
Ich bins von der arbeit her gewohnt das die Variablen sprechende namen haben und nicht sachen wie "G", "M", "R" und "C"...
Bei G bin ich mir nicht sicher ob das Gadget oder "Green" heißen soll, logisch ist je nach code-abschnitt beides. "M" könnte "Mouse" sein. "R"? Red oder Rectangle? C ist mir völlig rätselhaft. _________________ Milch ftw  |
|
Nach oben |
|
 |
XOR
Anmeldungsdatum: 23.07.2010 Beiträge: 161
|
Verfasst am: 06.07.2011, 16:45 Titel: |
|
|
An das CPU schonen werde ich mich mal noch setzen.
G steht oft fuer Gadget, in GFX functionen fuer Green
M fuer Mouse
R fuer Rectangle, in GFX functionen fuer Red
C fuer Child oder fuer Color
P fuer Parent
das mit der CPU last liegt daran dass ich alle Gadgets immer neu zeichne.
das werde ich dann wohl so loesen dass jedes gadget einen Bildpuffer bekommt und darein die daten schreibt, veraendert man nun die Position eines fensters wird nur der BildPuffer des fensters neu gezeichnet und nicht alle gadgets. drueckt man einen Butten wird dieser neu gezeichnet und der BildBuffer vom Parentwindow entsprechend angepasst. |
|
Nach oben |
|
 |
MilkFreeze

Anmeldungsdatum: 22.04.2011 Beiträge: 116
|
Verfasst am: 06.07.2011, 18:24 Titel: |
|
|
XOR hat Folgendes geschrieben: | An das CPU schonen werde ich mich mal noch setzen.
G steht oft fuer Gadget, in GFX functionen fuer Green
M fuer Mouse
R fuer Rectangle, in GFX functionen fuer Red
C fuer Child oder fuer Color
P fuer Parent
|
Haust du den code durch einen Obfuscator? Ich habe immer einen auf den Deckel bekommen wenn ich solche Namen verwendet habe. Auf arbeit ist mir das völlig untersagt (da sind schon die Präfixe dreistellig). Gut gemeinter Rat: Gewöhn dir das ab. _________________ Milch ftw  |
|
Nach oben |
|
 |
XOR
Anmeldungsdatum: 23.07.2010 Beiträge: 161
|
Verfasst am: 06.07.2011, 19:06 Titel: |
|
|
Zitat: | Ich habe immer einen auf den Deckel bekommen wenn ich solche Namen verwendet habe. |
Ich schreibe die codes fuer mich. da schaut kein lehrer oder sonstwer rueber.
Zitat: | Gut gemeinter Rat: Gewöhn dir das ab. |
Werde ich mir merken. |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 07.07.2011, 00:18 Titel: |
|
|
MilkFreeze hat Folgendes geschrieben: | da sind schon die Präfixe dreistellig |
Prä-lol? Namespaces? |
|
Nach oben |
|
 |
MilkFreeze

Anmeldungsdatum: 22.04.2011 Beiträge: 116
|
Verfasst am: 07.07.2011, 18:22 Titel: |
|
|
Die Präfixe dienen der Typenkennzeichnung:
* Global oder Lokal?
* Referenz oder variable?
* Datentyp?
Hilft beim Lesen von nicht eigenem Code ungemein. _________________ Milch ftw  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 07.07.2011, 20:50 Titel: |
|
|
MilkFreeze: Ja, das ist das Standardargument für Präfixe. Das mag ein bisschen helfen, wenn man einen Texteditor und keine IDE zum Bearbeiten vom Code verwendet, aber gerade mit modernen IDEs sind Präfixe nicht mehr nötig und sehen affig aus. Es ist schrecklich, wie viele Codes mit diesem WinAPI-Stil verseucht sind. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
MilkFreeze

Anmeldungsdatum: 22.04.2011 Beiträge: 116
|
Verfasst am: 07.07.2011, 22:10 Titel: |
|
|
Jojo hat Folgendes geschrieben: | MilkFreeze: Ja, das ist das Standardargument für Präfixe. Das mag ein bisschen helfen, wenn man einen Texteditor und keine IDE zum Bearbeiten vom Code verwendet, aber gerade mit modernen IDEs sind Präfixe nicht mehr nötig und sehen affig aus. Es ist schrecklich, wie viele Codes mit diesem WinAPI-Stil verseucht sind. |
Wir haben eine sehr Strenge QS und eine noch strengere Revision. Jeder code der nicht den Richtlinien entspricht darf nicht produktiv gehen. Mir bleibt also keine andere wahl als mich daran zu halten. Privat benutz ich selten präfixe - und vorallem keine dreistelligen. _________________ Milch ftw  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 07.07.2011, 22:13 Titel: |
|
|
Mir ist schon klar dass ihr Coding-Richtlinien in dieser Hinsicht habt (wäre sehr schlecht wenn nicht), das heißt aber nicht, dass sie unbedingt sinnvoll sind. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
|