amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > wheelgrad speicherloch [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

19.07.2009, 23:20 Uhr

AGSzabo
Posts: 1663
Nutzer
hi,

ich hab ins guisystem den wheelgrad aus dem paletteeinsteller eingebaut. leider ist nach dem öffnen und schließen der beiden gadget.libraries hinterher immer genau 1584 bytes weniger speicher frei. das trifft auch dann zu wenn ich garkeine objekte davon erzeuge. es scheint ein fehler im os zu sein, ist mir aber unwahrscheinlich!

was nun? kennt jemand das problem? (ich habe natürlich alles durchgetestet)

gg, ags
--
e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ Dieser Beitrag wurde von AGSzabo am 19.07.2009 um 23:22 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

20.07.2009, 13:25 Uhr

Holger
Posts: 8116
Nutzer
Hast Du es mit avail flush oder ähnlichem überprüft?
Es ist nämlich vollkommen normal, das geladene Module im Speicher bleiben, solange selbiger nicht knapp wird...

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

20.07.2009, 13:43 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger

wenn ich libs öffne, die im rom sind, aber auch die icon.library von disk, ist nach dem schließen wieder genausoviel platz frei. selbst wenn die gadgets im speicher bleiben mueeste beim zweiten starten des programms wieder genausoviel speicher übrig sein wie nach dem ersten. logisch? was mir passiert ist nur zu erklären indem man annimmt dass bei jedem öffnen der gagdets speicher allokiert wird, der nciht oder nicht bis zum flush freigegeben wird. aber ich probiere das flush mal aus.

davon abgesehen, muss ich die gadgets öffnen bevor ich sie verwende? in NewObject() gebe ich schließlich den namen an und nicht den zeiger auf darauf... oder muss ich sie nur öffnen wenn ich funktionen daraus verwende?

nochwas: welche möglichkeiten gibt es, dass sich beim verändern des wheelgadgtes die farben im slider automagisch anpassen? im examples verzeichis ist ein beispiel in dem das per hand vom programm gemacht wird. aber gibt es eine möglichkeit das automatisch machen zu lassen?

ps: ok, mit avail flush ist der speicher wieder ganz da!

--
e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ Dieser Beitrag wurde von AGSzabo am 20.07.2009 um 13:45 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

20.07.2009, 13:52 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
wenn ich libs öffne, die im rom sind, aber auch die icon.library von disk, ist nach dem schließen wieder genausoviel platz frei.

Die meisten dieser libs sind auch schon vorher von anderen Programmen benutzt worden und daher bereits im Speicher. Auch die icon.library.
Zitat:
selbst wenn die gadgets im speicher bleiben mueeste beim zweiten starten des programms wieder genausoviel speicher übrig sein wie nach dem ersten.
Wenn nicht noch andere Dinge in Deinem System passieren (damit muss man bei Multitasking-Systemen immer rechnen), dann schon.
Zitat:
davon abgesehen, muss ich die gadgets öffnen bevor ich sie verwende? in NewObject() gebe ich schließlich den namen an und nicht den zeiger auf darauf...
NewObject() lädt keine Klassen von der Festplatte. Du musst das immer selbst machen.
Zitat:
nochwas: welche möglichkeiten gibt es, dass sich beim verändern des wheelgadgtes die farben im slider automagisch anpassen?
Es gibt für den Slider ein Tag, mit dem man das zugehörige colorwheel direkt angeben kann. Dann passiert alles vollautomatisch, nicht nur der Hintergrund des sliders wird aktualisiert, wenn Du das colorwheel nach der aktuellen Farbe fragst, hat es dann auch die richtige Helligkeit.

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

20.07.2009, 14:12 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

> Es gibt für den Slider ein Tag, mit dem man das zugehörige colorwheel direkt angeben kann


es scheint genau andersrum zu sein. es gibt für das wheel einen tag an dem der slider hängt. ich weis aber nicht ob mein include auf dem neusten stand ist...

ich hoffe das mit dem slider im wheel ist das was du meinst und es geht so, denn sehen kann ich es noch nicht solange ich nicht pens für den slider bereitstelle. was mich aber wundert, dass im wheelgrad.c der slider dem wheel als tag angegebne wird und das programm dennoch die farben selbst ändert!

noch eine kleinigkeit: ich habe das tag "immediate" gesetzt aber das wheelgad wird erst beim zweiten oder dritten klick aktiv (wahrscheinlich durch doppelklick)...

und noch eine: wie hindere ich intuition daran das gadget selber zu zeichnen? ich will dass es nur auf mein commando gezeichnet wird.

und dies: für refreshglist() scheint es keinen unterschied zu machen
ob ich als nummer des zu zeichneden gadgets null oder 1 angebe...was ist richtig? es soll nur ein gad gezeichnet werden..

--
e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ Dieser Beitrag wurde von AGSzabo am 20.07.2009 um 14:35 Uhr geändert. ]

[ Dieser Beitrag wurde von AGSzabo am 20.07.2009 um 14:42 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

20.07.2009, 15:02 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
es scheint genau andersrum zu sein. es gibt für das wheel einen tag an dem der slider hängt.

Mag sein, ich hab die Sachen nicht auswendig gelernt.
Zitat:
was mich aber wundert, dass im wheelgrad.c der slider dem wheel als tag angegebne wird und das programm dennoch die farben selbst ändert!
Die Welt ist voll von Beispielen, die unnötig kompliziert sind. Gerade, wenn es um C-Programme für den Amiga geht. Wer weiß, vielleicht wurde das Beispiel zu einem Zeitpunkt erstellt, als es das Direktverlinkungsfeature noch nicht gab...
Zitat:
noch eine kleinigkeit: ich habe das tag "immediate" gesetzt aber das wheelgad wird erst beim zweiten oder dritten klick aktiv (wahrscheinlich durch doppelklick)...
Das ist nicht normal. Abgesehen davon, bezweifle ich, dass die Eigenschaft immediate bei einem Gadget, in dem gedraggt wird, eine Bedeutung hat.
Zitat:
und noch eine: wie hindere ich intuition daran das gadget selber zu zeichnen?
Warum sollte man das wollen?

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

20.07.2009, 15:13 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

>Warum sollte man das wollen?

im eigens gemachten gui-system wo das gadget erst gezeichner werden darf sobald die draw-methode da vorbei kommt. im moment wird es aber auch beim ändern der fenstergröße (zB) von intuition gezeichnet. das sieht man manchmal oder selten kommt es zu teilweisen überlappungen beider draw-prozesse.
--
e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ - Antworten - Zitieren - Direktlink - ]

20.07.2009, 18:29 Uhr

AGSzabo
Posts: 1663
Nutzer
oooops, zum topic: ich habe mich in der zeile der ausgabe von availflush geirrt! es sind nach dem schliessen der gadgtes nach wie vor 1584 bytes weniger frei.
--
e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ - Antworten - Zitieren - Direktlink - ]

20.07.2009, 19:10 Uhr

thomas
Posts: 7717
Nutzer

Wenn du den Speicherverbrauch von deinem Programm messen möchtest, darfst du nicht mit Flush arbeiten. Du machst einmal avail flush, dann startest du dein Programm, machst diesmal nur avail, dann startest du dein Programm nochmal und machst nochmal avail. Die letzten beiden Avails müssen gleich sein. Alles andere geht zulasten von geladenen Libraries.

Es kann durchaus sein, daß das Colorwheel nicht alles freigibt. Arbeitest du mit OS 3.9 ? Ich kann mich da dunkel an irgendsowas erinnern.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

20.07.2009, 19:35 Uhr

AGSzabo
Posts: 1663
Nutzer
@thomas:

>daß das Colorwheel nicht alles freigibt. Arbeitest du mit OS 3.9 ?

os 3.9 , ja. aha das wirds wohl sein.


so, nachdem das wheel nun als xui-klasse eingebaut ist, muss ich es abfragen. im beispielsource geht das ueber MOUSEMOVE. das ist mir natürlich zu viel des guten, weil ich mousemove im fenster schonm so aktiv habe und weil ich doch nur dann informiert werden will, wenn ausdrücklich das wheel verändert wird. gibt es da einen hook oder wie muss ich den code anpassen?
code:
WG_INPUT	; *intuimessage a1

		cmp.l	#IDCMP_MOUSEMOVE,im_Class(a1)
		bne	.rts_false

		move.l	xuiWG_wheel(a0),d0
		cmp.l	im_IAddress(a1),d0
		bne.b	.rts_false


wie man sieht versuche ich es derzeit mit dem vergleich mti dem gadgetpointer... geht aber nicht

--
e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ Dieser Beitrag wurde von AGSzabo am 20.07.2009 um 19:39 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

21.07.2009, 10:15 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
so, nachdem das wheel nun als xui-klasse eingebaut ist, muss ich es abfragen. im beispielsource geht das ueber MOUSEMOVE.

Was wieder einmal bestätigt, dass Beispiele mit äußerster Vorsicht zu genießen sind. Keine Ahnung, warum das dort so gemacht wird. Der übliche Weg für ein BOOPSI-Gadget ist, dass man IC_Target (oder so ähnlich) auf IC???_IDCMP setzt, d.h. Änderungen werden nicht an ein anderes BOOPSI-Gadget, sondern an den MessagePort des Fensters geschickt, und dort wartet man auf IDCMP_UPDATE-Nachrichten.
Die kommen dann auch nur, wenn sich der Wert wirklich geändert hat.
Die korrekten Namen musst Du in den includes suchen, ich schreib ja hier nur aus dem Gedächtnis über zehn Jahre zurückliegendes Zeuch.

Der Sinn von BOOPSI-Interconnection besteht darin, dass man im Idealfall die Objekte miteinander reden lässt, und nur dort eingreift, wo die Anwendung benötigt wird. D.h. Du kannst die verschiedenen Slider für R, G, B, H, S, V (das wäre der Gradient-Slider) und das colorwheel und meinethalben auch noch textuelle Eingabemöglichkeiten alle miteinander koppeln, so dass sie sich gegenseitig aktualisieren und musst nur noch auf Änderungen der resultierende Farbe hören.
Zitat:
im eigens gemachten gui-system wo das gadget erst gezeichner werden darf sobald die draw-methode da vorbei kommt. im moment wird es aber auch beim ändern der fenstergröße (zB) von intuition gezeichnet. das sieht man manchmal oder selten kommt es zu teilweisen überlappungen beider draw-prozesse.
Ja, da zeigt sich wieder, dass es unpraktisch ist, das Rad neu erfinden zu wollen, wenn gleichzeitig fertige schicke Autos vor der Tür stehen, die man mitbenutzen will.
Wenn man unbedingt sein eigenes Rad braucht, wäre der naheliegendste Schritt, das Rad kompatibel zu den existierenden Fahrzeugen zu machen, aber irgendwie war klar, dass Du lieber alle Fahrzeuge umbauen willst, um sie zu Deinem eigenen Rad kompatibel zu machen.
Das geht natürlich auch (irgendwie), aber ich wüsste nicht, warum ich diesbezüglich mir irgendwelche Mühe machen sollte.
Freu Dich doch erstmal, wenn Du es schaffst, die Objekte so zu nutzen, wie sie eigentlich gedacht sind...

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

21.07.2009, 11:29 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

> Freu Dich doch erstmal, wenn Du es schaffst, die Objekte so zu nutzen, wie sie eigentlich gedacht sind...

aber sicher freue ich mich!

das rad erfinden macht spass, ist wie kreutzworträsel unf wettrennen in einem! man lernt sehr viel dabei. kreutzworträtsel sind ebenso sinnlos oder sinnvoll!
--
e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ - Antworten - Zitieren - Direktlink - ]

21.07.2009, 20:19 Uhr

AGSzabo
Posts: 1663
Nutzer
Ok, das wheel nimmt jetzt farben an die ich im format $FFFFFF (24 bit) angebe und es stellt den slider richig ein!

jetzt will ich im programm wissem, ob die IDCMPUPDATE-messages tatsächlich vom wheel kommen (sie kommen überhaupt schon, ich habe ICA_TARGET des gadgets auf ICTARGET_IDCMP gesetzt und das fenster-idcmp passend eingestellt).

ich hab einiges ausprobiert, zb ICSPECIAL_CODE mit einer ID gefüllt, die laut docs im im_Code feld der intuimessage ankommen sollte, tut es aber nicht...
--
e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ - Antworten - Zitieren - Direktlink - ]

21.07.2009, 21:02 Uhr

thomas
Posts: 7717
Nutzer
@AGSzabo:

imsg->IAddress ist eine TagList, in der steht, welche Attribute sich wie ändern. Das erste Tag ist GA_ID und enthält die GadgetID des Absenders.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

21.07.2009, 21:10 Uhr

AGSzabo
Posts: 1663
Nutzer
@thomas:

hey danke, das ist ja echt großartig! woher weis mans sowas? ich meine in den docs und im rkm konnte ich das so nicht finden!

btw es scheint aber noch andere methoden zu geben, nämlich die mit dem im_Code feld zB, wenn man verstehen würde wie die docs das meinen...

ps: gibt es keine methode den zeiger auf das gadget das benutzt wurde zu empfangen? weil die id scheint blos WORD-größe zu haben? ich will aber ein LONG, nämlich zB das aus GA_UserData.

--
e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ Dieser Beitrag wurde von AGSzabo am 21.07.2009 um 21:36 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

31.07.2009, 18:32 Uhr

AGSzabo
Posts: 1663
Nutzer
kann es sein, ...

dass das colorwheel unter os4.1 nimmer richtig unterstützt wird? wenn ich es größer darstelle als es minimal ist, gibt es gelegentlich grafikfehler, die sich dann auch in den hintergund anderer fenster ausdehnen können.

in den prefs zu 4.1 konnte ich das colorwheel nimmer finden!
--
Sam os4.1, e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > wheelgrad speicherloch [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.