Jump to content

Non-functional after system resume


daffy

Recommended Posts

DVBViewer does not survive a hibernate / resume cycle.

 

* Perform a cold system boot

* Log into W2K3

* Start DVBViewer

* Switch to desired channel

 

* Press power button or trigger hibernate through UI

 

* Restart / resume system from hibernation mode (power button)

* W2K3 comes back into the correct user account / state

 

//exp: DVBViewer is left in the exact same state, including selected channel and run state as was the case before the hibernate cycle

 

//act: DVBViewer is responsive, but no TV image is show; channel switches do not result in reactivation of the TV capabilities

 

Only after a complete restart of DVBViewer is it possible to watch TV again.

 

The above is quite somewhat of a nuisance, given the following IMO realistic scenario:

 

* watch TV

* go to bed (hibernate <cough>)

* wake up (resume)

* watch TV again

 

Aside: Which is the preferred language for defect reports and enhancement requests? I for myself don't care whether it's German or English - others might care.

Link to comment

That's not really a bug, it just isn't possible yet. Have a look here.

 

Aside: Which is the preferred language for defect reports and enhancement requests? I for myself don't care whether it's German or English - others might care.

The more people can understand your problem the more answers you'll get.

 

Bye, Oliver

Link to comment

From the thread you point me to, it seems as if you do not understand.

 

I don't want the computer to start automatically, I don't want it to hibernate automatically.

 

I merely expect that DVBViewer watches for WM_POWER and/or WM_POWERBROADCAST and takes action by reinitializing whatever is, at that time, well, not doing so well...

Link to comment

Seemingly you failed to understand. There's no difference between manual and automatical standby or hibernation. The problem is seemingly not related to the DVBViewer.

 

Bye, Oliver

Link to comment

One big problem with suspend/hibernate/standby are drivers that store certain values in hardware registers (status or other settings). These values are *not* saved when the PC is switched to suspended mode.

 

Thus, after waking it up again, the hardware is in an init (reset) state, and the software in a functional state, and that won't work... and the SS2 has a whole lot of hardware registers!

 

I think it's a general issue of the SS2 and its drivers, not of the DVBViewer.

 

Griga

Link to comment

Oliver, please explain the difference between

 

* user shuts down an application

* user restarts an application

 

and

 

* application throws away its internal state

* application reinitializes its internal state

 

as far as, say, an external device is concerned? Or, to perhaps show this in Delphi terms:

 

THardwareManager = class

private

procedure InitializeStuff;

procedure FinalizeStuff;

 

public

constructor Create;

begin

InitializeStuff;

end;

 

destructor Destroy;

begin

FinalizeStuff;

end;

 

procedure ReceivedHibernationPending; message WM_POWER_OR_WHATEVER;

begin

FinalizeStuff;

end;

 

procedure ReceivedWakeupResume; message WM_POWER_OR_WHATEVER;

begin

InitializeStuff;

end;

 

Your argument would only hold if I had to warm boot or cold boot the system. And that is not where the problem is. The problem is that DVBViewer is ignorant of power status events and does not reinitialize the subsystems it uses.

 

Do you expect me to actually write code that demonstrates that an application

 

a) receives resume events

:wub: may reinitialize subsystems it uses

 

? I want DVBViewer to do that. And, really, I couldn't care less whether it is the B2C2 kernel driver that *ought* to be restoring internal hardware or not. I care about end user (i.e. my) experience. And I just would like to see the problem solved. If DVBViewer has an internal architecture that makes that easy, well, here we go. If not, I guess it's tough luck and it'll get costly.

 

Griga, I am fully aware of the issues associated with the various ACPI and APM power states (ever since I had fun with ACPI on Linux a few years ago).

 

Since the SS2 kernel driver apparently does not properly restore its *internal* state after a resume and since it apparently needs to be reinitialized, I expect that *DVBViewer* simply does that for me instead of forcing *me* to *manually* trigger that as a side effect of restarting DVBViewer itself.

 

Windows sends these power events - please do put them to good use.

Link to comment
Oliver, please explain the difference between

 

* user shuts down an application

* user restarts an application

 

and

 

* application throws away its internal state

* application reinitializes its internal state

 

Why should I? That's not what you criticized. You said the DVBViewer does not revive after standby/hibernation. And there is no difference between you pressing the standby button or let the DVBViewer do the job.

 

Do you expect me to actually write code that demonstrates that an application

No, I expect you not to change the topic in one thread.

 

And, really, I couldn't care less whether it is the B2C2 kernel driver that *ought* to be restoring internal hardware or not.

You should. The DVBViewer cannot do something the driver does not allow.

 

Bye, Oliver

 

PS: Since it's not a bug, I've moved the posting to feature requests. But you shouldn't be too expectant.

Link to comment

Apparently my English is not clear enough, so let me describe a scenario in German that reflects what I tried to say in my very first message:

 

Windows läuft. DVBViewer läuft und zeigt n-tv.

 

Ich drücke den Power-Schalter meines Rechners und der Rechner wird in den Ruhezustand versetzt ("Hibernate").

 

Ich drücke nun wieder den Power-Schalter meines Rechners; der Rechner wacht auf und sowohl Windows wie auch DVBViewer laufen weiterhin.

 

Einziges Problem: DVBViewer zeigt nicht n-tv sondern eine graue / gestreifte Fläche ohne Ton.

 

Vermutlich ist die Ursache hierfür, daß der B2C2-Treiber den internen Status der Skystar-Karte nicht korrekt reinitialisiert. Da dies nicht geschieht, erwarte ich von DVBViewer einen entsprechenden work-around. Dieser work-around schaut sich WM_POWER_WHATEVER an und reinitialisiert das Subsystem (sprich: lädt den Treiber / die COM-Objekte / was auch immer neu).

 

Resultat: Direkt nach dem Aufwachen meines Rechners aus dem Ruhezustand habe ich wieder ein laufendes Fernsehbild.

 

In dem von Dir zitierten Thread finde ich nur das Problem beschrieben, den Rechner wieder *automatisch* aus dem Ruhezustand aufzuwecken - aber das interessiert mich nicht. Ich verstehe auch nicht, warum das Überleben eines Hibernate/Resume cycle ein Problem darstellen würde - siehe meinen letzten Beitrag.

Link to comment

Your problem could have a lot of reasons:

one reason could be, that the LNB lost his tuning during the hibernation modus and without an retune you cant see a picture.

The other problem could be the MPG2 filter. Maybe he cant show the running picture direct after hibernation.

An ohter problem could be your directshow which have problems to show it after hibernation.

For problems of the driver of the card (retuning problem) you have to write to B2C2 or TechniSAT.

If the DVBViewer should do this, the viewer must know that you have reactivated your pc from hibernation. How should the viewer this recognize?

You wrote , you don't understand why there is a problem to survive the hibernation modus for the DVBViewer.... If you not realy understand how critical such a hibernation for a lot of processes is, you cant understand this problem. A lot of people invested a lot of time for this problem and they dont find a solution. Maybe your are better like us! :wub:

 

By the way: you can wish/request it but not claim it. :)

If you have enough knowledge in Delphi (or an other language) you can build a plugin which retune the viewer after hibernation automaticaly and the problem is solved. The interface is known and retune the viewer is simple to do. Only to detect the awaking after hibernation is dificult.

Other User had build plugins to for there special problem. Maybe you can do the same and give us such a plugin.

Link to comment
If the DVBViewer should do this, the viewer must know that you have reactivated your pc from hibernation. How should the viewer this recognize?

 

As indicated earlier in this thread: WM_POWER and/or WM_POWERBROADCAST

 

If you have enough knowledge in Delphi (or an other language) you can build a plugin which retune the viewer after hibernation automaticaly and the problem is solved.

 

If it was as simple as retuning - well, a channel switch would fix that, no? Or a "rebuild graph" might suffice, too, no? Well, they don't. IOW, this will probably require tearing down a variety of COM objects, if not all application-private instances of DirectShow in their entirety. I studied the DVBViewer SDK documentation and, trust me, it does not expose enough functionality to implement the latter at all.

Link to comment

A retune of the channel (without fast channelswitching) reactivated the complete directshow graph and (if the driver works properly after hibernation) the lnb would be tuned on the needed results.

If you want help with the SDK you can ask Griga (wrote any verry good plugins) or hackbart and i'm sure they will help you!

 

Steffen

Link to comment

Hi,

 

just my 2 cents.

 

I think the problem can be solved in a very easy way.

 

What does the DVBViewer do when it's started? It initializes stuff.

What does it have to do after a resume event? Initialize that same stuff.

You'd just have to tell the DVBViewer to go throug the whole init again as if it were just started. I don't think that's a problem.

 

Bye

 

Aydan

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...