[java] ImageObserver wordt niet aangeroepen

Pagina: 1
Acties:

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
Ik heb een probleem wanneer ik de breedte wil opvragen met behulp van mijn image observer. Wanneer ik de breedte en hoogte van een afbeelding opvraag dan geeft de image -1 aan en zal het de observer aanroepen wanneer deze afmetingen bekend zijn.
Nu wordt bij een specifieke (maar geldige) afbeelding soms the image observer niet aangeroepen (terwijl de image aangegeven heeft met -1 dat dit wel zal gebeuren).

Verder laat ik thread die de dimensies opvraagt wachten op de observer. Aanvankelijk dacht ik dat er misschien een deadlock zou kunnen zitten in mijn code, maar dat kan hierbij geen rol spelen, want voordat ik in de image observer iets met een monitor doe, print ik eerst een testberichtje op het scherm en die wordt daar niet neergezet.

Weet iemand een mogelijke oorzaak en/of een mogelijke oplossing?

In essensie komt m'n code neer op:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
synchronized(observer)
{
    breedte = image.getWidth(observer)
    height = image.getHeight(observer)

    if (breedte of hoogte is -1)
      observer.wait();
}

observer.imageUpdate(...)
{
    synchronized(this)
    {
      if (breedte bekend) set breedte
      if (hoogte bekend) set hoogte

      if (breedte >= -1 && hoogte >= -1)
          notify() & geef aan dat verdere informatie niet meer nodig is

      continue / stop bij fout
    }
}

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]